我正在浏览工厂方法模式和抽象工厂方法模式的wiki页面。
从Head First设计模式我得到了这个
工厂方法模式使用继承,抽象工厂模式使用组合。抽象工厂模式也与Factory方法模式一样,它使客户端与具体类型分离,但方式不同。
在分析了wiki的例子之后,我实际上找不到这些例子中的作文。这两种模式都使用继承。
工厂方法模式

抽象工厂模式

这是我的问题。
发布于 2017-07-25 11:19:33
是的,正如"Fuhrmanator“所指出的,它看起来是重复的。上述问题的答案对这两种模式提供了很好的解释。简而言之,GOF设计模式目录谈到了三种模式,其中包含“工厂”一词。这三种都是造物模式。大多数人在使用术语“工厂模式”时使用静态工厂实现。
静态工厂是一种方便的方法,可以用一种方法来包围混凝土类的创建
AbstractProduct getProduct(key){
if (key == ...) return new ConcreteProduct1();
... so on.
} 工厂方法是一个单一的抽象方法,作为一个钩子,以延迟具体产品的实例化。当我们在编写编写业务逻辑的框架时,这是非常有用的,但我们不想假设客户端开发人员稍后将编写的具体类(此逻辑适用于这些类)。(此处不重复UML模式图)
工厂模式是工厂方法中比较普遍的一种情况,我们需要限制可以实例化和使用的产品类型,但是完全的风味变化(在整个应用生命周期中,我们不会在味道之间不停地切换)。
例如,抽象的ShapeFactory可以提供创建3种形状的接口,如圆形、方形和矩形,而作为混凝土工厂,FilledShapeFactory和HollowShapeFactory将被绑定提供这三种形状的填充和中空版本(混凝土工厂不能自由决定新形状或丢弃任何形状)。
当各种形状(产品)发生变化时,不能使用此模式,因为它会强制更改界面并影响客户端。
口味变化的原因可能是由于父环境、操作系统或任何其他严重影响参数。
https://stackoverflow.com/questions/45284039
复制相似问题