Что я имею? У меня есть абстрактный класс QueryExecutor
и многие классы, наследующие его, я только что дал два из них. Логика построения объекта результата одинакова, но каждый унаследованный класс возвращает другую коллекцию - некоторые из них находятся в пространстве имен System.Web.UI.WebControls
, а некоторые - это классы пользовательской коллекции.Проблема с дизайном - общий базовый класс и разные типы возврата
abstract class QueryExecutor
{
abstract object Execute();
//Common methods for construction of query
}
class SqlQueryExecutor : QueryExecutor
{
public object Execute()
{
ProfileNodeCollection nodes = new ProfileNodeCollection();
//Construct nodes
return nodes;
}
}
class CamlQueryExecutor : QueryExecutor
{
public object Execute()
{
TreeNodeCollection nodes = new TreeNodeCollection();
//Construct nodes
return nodes;
}
}
Что я хочу?
Я думал о наличии фабрики, которая создает экземпляр соответствующего дочернего класса и возвращает результат. В приведенном выше дизайне мне нужно отличить результат от метода QueryExecutor.Execute()
. Который я не хочу делать.
С какой проблемой сталкиваюсь я?
Поскольку типы возврата различаются в классах детей (а некоторые - в System.Web.dll
), является ли вышеуказанный дизайн подходящим для этой проблемы?
Есть ли какой-либо другой подход, которому я должен следовать?
ОК. Хорошая идея ... Позвольте мне попробовать. Благодаря! – Vijay