设计模式中,真的有长的很像的,甚至我们能从其中一个的类图直接演变为另一种类图。 它们中有的类图一样,有的语言近似,但是却有着不同的名字,不同的“马甲”,让我们快来认一认。
模板方法建造者模式工厂方法
三者比较:相同点,主要思想都是定义一个框架,然后将一些步骤延迟到子类。
不同点,首先,模板方法模式是行为型模式,而建造者模式工厂方法都是创建型模式。
两两比较:模板VS 建造者
建造者模式用到模板方法,他们两个的使用范围区分就看构建的算法是否需要另外创建一个类。而承担这部分责任的则是建造者中应有的另外一个类,和其特有的指挥类。
建造者VS工厂方法
在建造者模式图中,假如把这个指挥类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。与工厂模式相比,建造者模式适用对象的创建过程更为复杂的情况,因此将对象的创建过程独立出来组成一个新的类——指挥类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给指挥类。由指挥类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。
状态图策略图
艾玛~这一模一样的啊~~有多少和我一样,第一次都没发现。。可是既然一模一样,为什么又把一个模式说两遍呢?要是说不同点,从这张图中恐怕是难有答案了。我们来从其他角度具体分析一下。
让我们来看看它们之间更多的相似之处:
下面来看看具体的不同
代理模式 装饰模式
仅看类图,感觉两者并不是十分相似。但是细心的同学也会发现两者语法形式上几乎完全一样。
让我们来看看它们之间更多的相似之处:
此外,桥接模式和适配器模式等等也是有可比性的。第一次学完设计模式,我知道,每一个设计模式并不是独立的。遵循6大原则和实际需要变化和封装的情况,我们灵活的来选择并应用它。《大话设计模式》的学习告一段落,也就意味着设计模式要开始真正的走进我们的生活了。
整个过程我的收获很多,包括对类图的理解,各个关系以及由类图到代码的转变。还有在不断的理解变化。设计模式,让我相信学习来源于生活,多结合生活,就能更好的理解所学。至于不足就是,设计模式的理解还不够到位,也有待在实践中去多应用,多体会。
【设计模式】不要以为穿了马甲我就不认识你,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u010176014/article/details/25827165