结构
下图为抽象工厂模式的类图。
这个类图和前面出现过的类图唯一的区别就是使用了更加抽象的类名。所以就不在重复说明了。
这里说说另一个话题:画类图。抽象工厂模式的类图可以按照以下步骤(当然不是绝对的)画出:
-
首先可以个画出三个工厂类。
-
为每个工厂类添加两个产生产品的操作/方法。
-
画出两个产品系列的继承结构。
-
添加客户类。
-
添加依赖关系。
作者有一个观点,第一步完成了就可以说是抽象工厂模式了。因为根据抽象工厂模式的想法,其他的部分几乎都是必然的。
参与者
• AbstractFacroty (WidgetFactory )
— 声明一个创建抽象产品对象的操作接口。
•ConcreteFactory (MotifWidgetFactory,PMWidgetFactory )
— 实现创建具体产品对象的操作。
• AbstractProduct (Windows,ScrollBar)
— 为一类产品对象声明一个接口。
• ConcreteProduct(MotifWindow,MotifScrollBar)
— 定义一个将被相应的具体工厂创建的产品对象。
— 实现AbstractProduct接口。
• Client
— 仅使用由AbstractFactory和AbstractProduct类声明的接口。
介绍每个类图中每个类的职责,没有什么需要补充的。
要点归纳
如果读完了《设计模式》,你会发现类图中的一些规律:
1.需要实现替换/扩展是,就是使用多态。这时父类会设计成抽象类,父类操作会设计成虚函数。
2.客户一般只和抽象类打交道。
3.在想要表达多个的时候,一般就用两个来表示。
《设计模式》中类图的规律,有些也是面向对象设计的原则。哪怕你不用设计模式也应该遵守。
注:
本文中
蓝 {MOD}粗体文字都引自《设计模式》一书。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】