前面一篇文章我开头说,《设计模式》这么书翻来覆去地看,就只看出两个字“回调”。一方面是为了搞笑,但也并不全属信口开河。因为大部分模式都是基于多态,我认为多态其实就是面向对象提供的回调机制。
下文我对照经典书籍《设计模式》,讲讲我对23种设计模式的理解。
按照顺序依次说吧:
1) Abstract Factory(抽象工厂)模式:其实就是用来创建对象的strategy。可以把抽象工厂基类看成Strategy基类,具体工厂看成具体Strategy。关键思想就是回调:一个类要干偷鸡摸狗的事情,但不希望把乌骨鸡和中华田园犬的创建写死在该类中,于是就用这个模式把这些对象的创建和偷鸡摸狗的操作解耦开来。如果抽象工厂的产品只有一个,可以不需要上下文的帮助,这时候我不知道要称其为什么模式了,好像就是最简单的多态了。
2) Builder(生成器)模式:这个模式是个杂碎。只看Builder、ConcreteBuilder和Director的关系,又是strategy那套,不过buildPart,buildPart,getResult的这个流程又有所不同,很容易把人搞蒙。其实没这么复杂,游戏制作,常需要制作一个地图编辑器。builder模式思想与此类似:一个composite对象,总要提供个一步步创建的方法吧。可能觉得单纯说这个太显然太没深度,所以gof又把体位复杂化,引入了Builder、ConcreteBuilder。所以搞得Builder模式就像compositer模式的一部分(如何构建)和strategy模式的杂交。我以前编过类似builder的程序,但是没用到ConcreteBuilder,直到结项也没收到什么报应。所以书上的Builder模式有过度设计的嫌疑:不管3721,所有类都提出接口和具体类,这大部分时候只是在折腾自己。
3) factory method(工厂方法):其实就是用来创建对象的template模式,也是我上篇文章提到的回调机制的一种,还是挺不好的一种。
4) prototype(原型模式):我得承认,我没有完全理解这个模式。我能看懂每个字,也能看懂整段话,但实在不知道这东东能用在哪里,所以过几天又忘记这茬了。
5) singleton(单件模式):估计是最多人知道的设计模式了。主要优点是方便,不需要找个疙瘩扔下一个类的实例了。缺点是多线程下线程安全和效率是个两难的选择。加锁的话调用代价变高,不加锁有程序崩溃的风险。顺便说句,有些人对此提出双检锁算法(Double-Checking-Lock),不过在很多环境下该算法是无效的,详见http://en.wikipedia.org/wiki/Double-checked_locking。
《设计模式》旧书重读和总结:创建…
发布时间:2024-12-08 05:02
旧书改造:创意书架设计展示你的阅读品味 #生活乐趣# #生活分享# #家居生活方式# #日常家居技巧#
《设计模式》旧书重读和总结:创建…
最新推荐文章于 2015-10-14 21:03:13 发布
Runyon1982 于 2015-10-10 09:19:00 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
网址:《设计模式》旧书重读和总结:创建… https://www.yuejiaxmz.com/news/view/409153
下一篇:旧书重温忆华年
相关内容
23种设计模式总结及应用场景「旧书新生命」创业计划书(收旧书创业计划书)
关于高校旧书回收再利用的创新模式研究
室内设计总结范文 室内设计的总结模板 (14篇)
旧品回收公司创业计划书最终版模板
旧书回收活动总结
“书店+”创新实体书店发展新模式
环保循环旧书店创业计划
校园世界读书日活动总结
《设计中的设计》读书报告