在Eric Evans的“领域驱动设计”一书中,在第6章“工厂”(第139页)一节中,它说明如下:
“任何优秀工厂的两个基本要求是:
...
“2.FACTORY应该被抽象为所需的类型,而不是创建的具体类。”
请您详细说明该声明对第2号基本要求的含义。
答案 0 :(得分:10)
我认为这意味着你永远不应该从你的工厂返回具体类型。例如,如果你有一个接口,让我们说ISomething,一个anstract类SomethingBase,最后是一些实现这个接口并继承自基类的类。您的创建方法应该返回基类型的接口类型intead。我认为这就是主意。
public ISomething Create() { ... }
而不是
public SomethingBase Create() { ... }
我希望它有所帮助, 卡洛斯。
答案 1 :(得分:8)
Carlos Loth的回答是正确的,但您应该始终记得使用Abstract Factory,因为这样您就可以将具体工厂与具体类型相结合,而不会将消费者与具体工厂或类型联系起来。
public interface ISomethingFactory
{
ISomething Create();
}
public class SomethingFactory : ISomethingFactory
{
public ISomething Create()
{
return new Something();
}
}