在Gamma等人的设计模式中,“工厂方法”具有以下结构:

“抽象工厂”的结构如下:

为什么Creator有一个方法AnOperation()来调用工厂方法模式中的FactoryMethod(),而AbstractFactory没有一个方法来调用抽象工厂模式中的CreateProductA()和CreateProductB()?
Creator的方法AnOperation()调用FactoryMethod()是否遵循模板模式,其结构为

发布于 2019-06-07 07:09:05
工厂是专用于创建已定义类型的实例的类。这是工厂的唯一目的。另一方面,工厂方法可以存在于任何非工厂类型上。工厂方法图试图通过向类添加任意方法(在UML中,方法称为操作)来表达这一点,以显示其主要目的不是创建其他类型的实例。
当您将图表解释为AnOperation()正在调用FactoryMethod()时,您就错了。该图说明Creator是一种抽象类型,它有一个名为FactoryMethod的抽象方法和一个名为AnOperation的具体(或非抽象)方法。ConcreteCreator从Creator派生而来,继承了AnOperatio() (由于它不是抽象的,所以在UML类规范中没有重复)和抽象的FactoryMethod()。AnOperatio()和FactoryMethod()是两种独立的方法。‘
发布于 2019-06-07 07:14:09
它很简单:给定“一阶工厂”服务器的创建目的(基本上是一堆正确完成的new语句),“抽象工厂”-或“高阶工厂”-是创建的对象本身时的一个特例。另一家工厂。它有点类似于列表列表。
附注:你也可以有一个工厂,它创建一个工厂,然后再创建一个工厂。尽管它完全符合“高阶工厂”的定义,但它在大多数现实世界中都没有用处。
https://stackoverflow.com/questions/56483736
复制相似问题