Книга DDD, Эрик Эванс: Что подразумевается под "The w770>, следует абстрагироваться от желаемого типа, а не от конкретного созданного класса."?
В книге Domain Driven Design Эрика Эванса в главе 6 раздела "Фабрики" (стр. 139) говорится следующее:
"Двумя основными требованиями для любого хорошего FACTORY являются:
...
"2. FACTORY следует абстрагировать до желаемого типа, а не из созданного конкретного класса (ов).
Не могли бы вы рассказать о том, что подразумевается под этим утверждением о базовом требовании номер 2.
Ответы
Ответ 1
Ответ Карлоса Лота правильный, но вы всегда должны помнить, что Аннотация Factory, так как это позволит вам пара бетонных заводов к конкретным типам без подключения потребителей к конкретным заводам или типам.
public interface ISomethingFactory
{
ISomething Create();
}
public class SomethingFactory : ISomethingFactory
{
public ISomething Create()
{
return new Something();
}
}
Ответ 2
Я думаю, это означает, что вы никогда не должны возвращать конкретный тип с вашего завода.
Например, если у вас есть интерфейс, скажем, ISomething
, абстрактный класс SomethingBase
и, наконец, некоторые классы, которые реализуют этот интерфейс и наследуются от базового класса. Ваш метод создания должен возвращать тип интерфейса, а не базовый тип. Я думаю, что это идея.
public ISomething Create() { ... }
вместо
public SomethingBase Create() { ... }
Надеюсь, это поможет,
Карлос.