设计范式笔记-AbstractFactory(一)

设计范式笔记-AbstractFactory(一)

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.

 抽象工厂.png
由于对实现每个标准下的widget类型集合需要提供相应的WidgetFactory的实现,因此用户需要实例化每个标准下的工厂实现。

为解决这个问题,在Java中存在典型的实现方式。就是定义上图的上一部分,然后自己实现一个作为默认的;然后,在某个地方实现一个静态的方法,以实例化真实的WidgetFactory;接下来给应用开发人员提供一个标准的系统属性,比如-Djava.widget.factory=;这样可实现灵活的撤换。

你可能感兴趣的:(设计范式笔记-AbstractFactory(一))