抽象工厂和工厂方法可以一起使用吗?

时间:2011-04-03 23:18:43

标签: design-patterns factory-pattern abstract-factory

在驳回这个问题之前,我实际上认为这是一个实际问题,而不是引发对话。这是我的方案

在很多情况下,我已经读过抽象工厂是一个比工厂方法更进一步的实现,我可以在很多情况下看到为什么这是真的。我对这两者之间的区别也有相当好的理解,但最近我遇到了一个我被指示同时使用这两者的场景。

我的大脑如何做到这一点,我仍然不确定它是否是一种良好的做法。

您是否,或者您能指出一个例子,在这个例子中应用这两种模式并将它们共存在一起是否可行?如果没有,这是一种不好的做法吗?

请不要指引我到一个网站,给我这些模式的字典定义,我很清楚每一个,每天都在使用,但没有遇到我需要两者的情况。提前谢谢。

1 个答案:

答案 0 :(得分:1)

好吧,如果你有一个已经使用工厂方法的类,并且你想用另一个预定义的抽象工厂实现该方法,你可以在两者之间创建一个Adapter

public class FactoryAdapter : ClassUsingFactoryMethod
{
    private readonly IFactory factory;

    public FactoryAdapter(IFactory factory)
    {
        this.factory = factory;
    }

    protected override Foo CreateFoo()
    {
        return this.factory.Create();
    }
}