工厂方法是类设计模式。 Abstract Factory使用了许多Factory方法。为什么抽象工厂是对象设计模式,而不是类设计模式?抽象工厂推迟实例化哪个对象?
答案 0 :(得分:5)
Abstract Factory模式将产品对象的创建推迟到ConcreteFactory子类。由于客户端期望Factory类(它是ConcreteFactory子类的父类)作为方法参数;基于ConcreteFactory传递的实例,创建相应的产品实例。因此,Abstract Factory通过在运行时传递的ConcreteFactory实例上调用工厂方法来创建产品实例。因此,这是对象设计模式。通常这些混凝土工厂都是单身人士。
然而,工厂方法发生在类级别。必须创建一个新的ConcreteFactory类来实例化ConcreteProduct。这个ConcreteFactory扩展了Factory类,它有一个返回Product的create()方法。 ConcreteFactory重写在Factory父类中定义的create()方法。
发表评论:
是工厂方法已参数化,但在AbstractFactory中,您将能够在传递的ConcreteFactory上调用方法,从而使您能够在运行时切换到不同的ConcreteFactory。但是在Factory中,因为create()是类的一部分,如果你想创建具体的产品,你必须创建扩展父Factory类的ConcreteFactory。