在 Eric Evans 所著的《领域驱动设计》一书中,第 6 章的“工厂”部分(第 139 页)中说:
“任何好的工厂的两个基本要求是:
...
“2. FACTORY 应该抽象为所需的类型,而不是创建的具体类。”
您能否详细说明关于基本要求 2 的陈述的含义。
在 Eric Evans 所著的《领域驱动设计》一书中,第 6 章的“工厂”部分(第 139 页)中说:
“任何好的工厂的两个基本要求是:
...
“2. FACTORY 应该抽象为所需的类型,而不是创建的具体类。”
您能否详细说明关于基本要求 2 的陈述的含义。
我认为这意味着您永远不应该从工厂返回具体类型。
例如,如果您有一个接口,假设是ISomething
一个抽象类SomethingBase
,最后是一些实现此接口并从基类继承的类。您的创建方法应该返回接口类型,而不是基本类型。我认为这就是想法。
public ISomething Create() { ... }
代替
public SomethingBase Create() { ... }
Carlos Loth 的回答是正确的,但您应该始终记住使用抽象工厂,因为这将允许您将具体工厂耦合到具体类型,而无需将消费者耦合到具体工厂或类型。
public interface ISomethingFactory
{
ISomething Create();
}
public class SomethingFactory : ISomethingFactory
{
public ISomething Create()
{
return new Something();
}
}