Abstract Factory
,这是一个
Object Creational
范式。
原文
Intent
部分:
“
…without specifying their concrete classes
”,即对使用这个对象的用户,不直接提供
new
操作;
一个对象的类型支持多种标准;并满足用户在多种标准之间自由地从一种标准转换成另外一种标准。
为了实现这个范式,需要为将要实现的
widget
集合定义一个总的工厂抽象类,即:
AbstractFactory
,同时在这个工厂类中为每个
widget
定义一个类似于
CreateXXX
(
Create
表示要执行的活动,
XXX
表示被创建的
widget
的类型名称)的方法;并对要实现的
widget
集合中的每个
widget
定义一个抽象类。
原文
Motivation
部分:
“
There’s also an abstract class for each kind of widget, and concrete subclasses implement widgets for specific look-and-feel standards.
”
![af1](/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=632780334567500000)
![af1 抽象工厂.png](/images/cppblog_com/glideliu/DesignPatterns/抽象工厂.png)
由于对实现每个标准下的widget类型集合需要提供相应的WidgetFactory的实现,因此用户需要实例化每个标准下的工厂实现。
为解决这个问题,在Java中存在典型的实现方式。就是定义上图的上一部分,然后自己实现一个作为默认的;然后,在某个地方实现一个静态的方法,以实例化真实的WidgetFactory;接下来给应用开发人员提供一个标准的系统属性,比如-Djava.widget.factory=;这样可实现灵活的撤换。
posted on 2006-06-21 22:57
静静的流水 阅读(628)
评论(4) 编辑 收藏 引用 所属分类:
Design Patterns