买了设计模式这本书,看看真的觉得在云里雾里,看来我的水平真的不是一般的差啊!再看看网上大家的分析,还是不太理解各个模式的区别,所以就自己总结下区别。
下面我记录下我对各个模式的理解:
Abstract Factory(抽象工厂):是从各大厂商中挑选一个和自己的组装工厂合作,实现的是厂商与自己的统一接口,厂商可以任意扩充,生成单一产品,统一接口,互不影响
Builder(生成器):将复杂的产品分成多个组件,自定义组合生成不同的产品,实现的是各种不同的零件,零件可以任意扩充,生成的产品种类繁多,灵活组合,方便扩展
Factory Method(工厂方法):从工厂中挑选出一个产品使用,工厂实现产品的基础制作并提供产品的功能,关注单一,分担实现
Prototype(原型):对已经生成的产品在使用过程中按需要,做一些基础设定或变更,在一些设计语言中已经基本取代了该功能,本身实现一个实例就是对该类的复制,一类多形,实现灵活
Singleton(单件):工厂提供一个公共维修部,用于对产品的维修,对于不同情况还可以统一调配,降低调配难度,减少了占地面积,经验也统一了,统一访问,全局调配
Abstract Factory VS Bulider:2个模式类似,在总结中发现,都是从事了组装的工作,那将2个模式组合应该就可以实现比较复杂的情况
例:
Abstract Factory负责各大厂商,各大厂商的产品由Builder去实现,挑选厂商的产品在自己的组装工厂去实现一个单一产品
Abstract Factory负责各大厂商,自己组装工厂中有Builder实现多种模块,再在组装工厂中挑选模块去实现各种不同的产品
看了“设计模式”这本书后,我发现我以前都走了“弯路”,以前认为一定要实现设计模式中的内容才会方便开发
但通过我看书后的感觉是,不同的设计模式只是把日常设计中的一个个特例举例出来,让我们更清楚的认识各个特例之间的区别,让代码可以在这些区别中方便转换
实际上不同的设计模式,有很多都是类似的,为什么呢?我自己问我自己,自己的回答是:因为代码本生就是如此由变量-》方法-》类,就是这么组合在一起实现了各个不同的应用
不得不再次感叹“代码”的能力,在实际设计中通过独立出一个个功能块的确会在设计过程中减少开发的难度,套用一定的设计模式加快开发的效率
模式的应用会给代码带来更多的灵活性!模式也不光23种,不同的组合简直就是千变万化,代码还在发展中,也孕育了更多的开发思想,只有不断的学习才能提高自己产品的能力。
总结一句话:不要硬套,先分解自己的应用,在不同的模块中,找寻类似的模式来扩展实现更灵活的设计。