2.3 《硬啃设计模式》 第5章 “妞”太多,如何管理?(2)- 工厂方法(Factory Method Pattern)

我在实际工作中还没有用过工厂方法,下面简单谈谈我的理解,供大家参考。

类图

工厂方法1.png

这个图一下子不太好理解,我们先回顾一下简单工厂,简单工厂是通过一个方法来包装new对象的动作,如果我们将new对象的动作包装到一个类中,那么这个类就可以看成是一个工厂,该工厂专门用来产生某些对象的。

有时候我们希望能生产苹果、西瓜、葡萄等不同品种的水果,这样一个工厂就不能满足要求,我们需要分别做出苹果工厂、西瓜工厂、葡萄工厂,需要苹果时就调用苹果工厂的CreateProduct()就搞定了。

但问题来了,我们希望程序不需要管是苹果工厂还是西瓜工厂,总之是工厂就行了。这样我们就需要将这些苹果工厂、西瓜工厂、葡萄工厂抽象为水果工厂了,就好像上图中的ProductA_Factory,ProductB_Factory继承了抽象类Factory。

上图中无论是哪个工厂,生产的都是Product,Product、Factory已经被抽象,而ProductA_Factory实际生产的是ProductA1、ProductA2,ProductB_Factory实际生产的是ProductB1、ProductB2,注意上图中用了相同的颜色来表示哪个工厂生产哪些产品。

 

 

请看下一文……
 
 
 

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

《硬啃设计模式》作者

www.umlonline.org创办人

 

张传波 CSDN认证博客专家 大大大火球
软件研发及管理分享大师,《火球-UML大战需求分析》作者,创新工场敏捷课程讲师,豆芽儿-软件研发人才成长社区(www.douya2.com)创始人,豆芽儿公众号原创作者
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页