工厂方法是类设计模式。抽象工厂使用了许多工厂方法。为什么抽象工厂是对象设计模式,而不是类设计模式?抽象工厂将实例化推迟到哪个对象?
抽象工厂模式将产品对象的创建推迟到 ConcreteFactory 子类。由于客户端期望 Factory 类(它是 ConcreteFactory 子类的父类)作为方法参数;根据传递的ConcreteFactory实例,创建相应的产品实例。因此,抽象工厂通过在运行时传递的 ConcreteFactory 实例上调用工厂方法来创建产品实例。因此,这就是对象设计模式。通常,这些具体工厂是单例工厂。
然而,工厂方法发生在类级别。必须创建一个新的 ConcreteFactory 类来实例化 ConcreteProduct。这个 ConcreteFactory 扩展了 Factory 类,它有一个返回 Product 的 create() 方法。 ConcreteFactory 重写 Factory 父类中定义的 create() 方法。
回复评论:
是的,工厂方法是参数化的,但在 AbstractFactory 中,您将能够调用传递的 ConcreteFactory 上的方法,从而使您能够在运行时切换到不同的 ConcreteFactory。但在 Factory 中,由于 create() 是类的一部分,因此如果您想创建具体产品,则必须创建扩展父 Factory 类的 ConcreteFactory。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)