7

在 Eric Evans 所著的《领域驱动设计》一书中,第 6 章的“工厂”部分(第 139 页)中说:

“任何好的工厂的两个基本要求是:

...

“2. FACTORY 应该抽象为所需的类型,而不是创建的具体类。”

您能否详细说明关于基本要求 2 的陈述的含义。

4

2 回答 2

11

我认为这意味着您永远不应该从工厂返回具体类型。

例如,如果您有一个接口,假设是ISomething一个抽象类SomethingBase,最后是一些实现此接口并从基类继承的类。您的创建方法应该返回接口类型,而不是基本类型。我认为这就是想法。

public ISomething Create() { ... }

代替

public SomethingBase Create() { ... }
于 2010-02-03T19:13:53.277 回答
8

Carlos Loth 的回答是正确的,但您应该始终记住使用抽象工厂,因为这将允许您将具体工厂耦合到具体类型,而无需将消费者耦合到具体工厂或类型。

public interface ISomethingFactory
{
    ISomething Create();
}

public class SomethingFactory : ISomethingFactory
{
    public ISomething Create()
    {
        return new Something();
    }
}
于 2010-02-04T09:24:42.507 回答