繁体   English   中英

原型模式如何解决抽象工厂模式多产品族的问题?

[英]How does the prototype pattern solve the abstract factory pattern issue with many product family?

Design Patterns Elements of Reusable Object-Oriented Software中,它指出抽象工厂模式中的一个问题如下:

  1. 支持新产品很困难。 扩展抽象工厂以生产新型产品并不容易。 那是因为 AbstractFactory 接口固定了可以创建的产品集。 支持新型产品需要扩展工厂接口,这涉及更改 AbstractFactory class 及其所有子类。 我们在实施部分讨论了这个问题的一种解决方案。

在实施部分:

如果可能有许多产品系列,则可以使用原型 (117) 模式来实现具体工厂。 具体工厂使用系列中每个产品的原型实例进行初始化,并通过克隆其原型来创建新产品。 基于原型的方法消除了为每个新产品系列创建新的具体工厂 class 的需要。

我不认为我明白了。 根据我的理解,原型实现如何使具有相同属性的可克隆对象解决这个问题?

不完全确定,但我认为这就是他们的意思......

有了抽象工厂,我们每个家庭都有一个具体的工厂

在此处输入图像描述

有了原型,我们就有了一个具体的工厂,配置了给定系列的组件原型:

例如

UIComponentFactory windowsComponentFactory = new UIComponentFactory(
    new WindowsDropdownComponent(), new WindowsTextboxComponent()
);

UIComponentFactory macComponentFactory = new UIComponentFactory(
    new MacDropdownComponent(), new MacTextboxComponent()
);

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM