2.3 《硬啃设计模式》 第5章 “妞”太多,如何管理?(2)- 工厂方法(Factory Method Pattern)
我在实际工作中还没有用过工厂方法,下面简单谈谈我的理解,供大家参考。
这个图一下子不太好理解,我们先回顾一下简单工厂,简单工厂是通过一个方法来包装new对象的动作,如果我们将new对象的动作包装到一个类中,那么这个类就可以看成是一个工厂,该工厂专门用来产生某些对象的。
有时候我们希望能生产苹果、西瓜、葡萄等不同品种的水果,这样一个工厂就不能满足要求,我们需要分别做出苹果工厂、西瓜工厂、葡萄工厂,需要苹果时就调用苹果工厂的CreateProduct()就搞定了。
但问题来了,我们希望程序不需要管是苹果工厂还是西瓜工厂,总之是工厂就行了。这样我们就需要将这些苹果工厂、西瓜工厂、葡萄工厂抽象为水果工厂了,就好像上图中的ProductA_Factory,ProductB_Factory继承了抽象类Factory。
上图中无论是哪个工厂,生产的都是Product,Product、Factory已经被抽象,而ProductA_Factory实际生产的是ProductA1、ProductA2,ProductB_Factory实际生产的是ProductB1、ProductB2,注意上图中用了相同的颜色来表示哪个工厂生产哪些产品。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
《硬啃设计模式》作者
www.umlonline.org创办人