В книжном Домене Управляемый Дизайн, Eric Evans, в Главе 6 в разделе по "Фабрикам" (страница 139) это говорит следующее:
"Эти два основных требования для любой хорошей ФАБРИКИ:
...
"2. ФАБРИКА должна быть абстрагирована к желаемому типу, а не созданный реальный класс (классы)".
Могли Вы уточнять то, что предназначено тем оператором об основном требовании номер 2.
Ответ Карлоса Лота верен, но вы всегда должны помнить о том, чтобы использовать Абстрактный завод , так как это позволит вам соединить бетонные заводы с бетонными типами без привязки потребителей к бетонным заводам или типам.
public interface ISomethingFactory
{
ISomething Create();
}
public class SomethingFactory : ISomethingFactory
{
public ISomething Create()
{
return new Something();
}
}
Я думаю, это означает, что вы никогда не должны возвращать бетонный тип со своей фабрики.
Например, если у вас есть интерфейс, скажем ISomething
, абстрактный класс SomethingBase
и, наконец, некоторые классы, которые реализуют этот интерфейс и наследуют от базового класса. Метод создания должен возвращать тип интерфейса, а не базовый. Я думаю, что это и есть идея.
public ISomething Create() { ... }
Вместо
public SomethingBase Create() { ... }
Надеюсь, это поможет, Карлос.