一、“计算器”结构图——简单工厂模式
简单工程模式:对具有相同功能的类进行抽象得到父类,这些类继承它成为子类。为了对这些功能进行选择,建立一个工厂类进行判断,其中运用一个Switch语句。
优点:结构简单、操作单一。
缺点:需要事先考虑周到,操作时需准确。由下的“功能扩展”中可知,易违背设计模式六大原则中的“开放-封闭原则”。
功能扩展:若增添功能方法,则需另添加一个类,在运算类中添加的相应的方法,再修改客户端中的Switch语句中的case项。
二、“计算器”结构图——工厂方法模式
工厂方法模式(Factory Method):先建立一个工厂接口,再通过具体工厂来实现接口,同时调用相应的算法类,这些算法类真正执行具体算法。
优点:灵活度高,可扩充性较强。同时客服了简单工厂模式的“开放-封闭原则”的不足。
缺点:结构冗余,需建立的类较多,增加了复杂度。
添加功能:添加工厂来实现接口,添加一个算法类来供工厂调用,在客户端即可使用此功能了。
列表对比:
总结:通过上面的“结构图”和“列表对比”,我们很容易能发现,在固定的小需求中简单工厂模式的工作量小于工厂方法模式,在资源的开销上也确实要小一些;而工厂方法模式比较全面一些,在应对变动需求的时候显示出了它的灵活性。各有千秋,只是使用在不同的位置上。
“简单工厂模式”有它单纯、直率的一面,这是我们可以学习和善加利用的;
“工厂方法模式”也表现出了它的细致灵活、能担当,这也是我们程序猿的好助手。
原文:http://blog.csdn.net/wangqingbo0829/article/details/37390471