最近设计模式的文章又多了起来,戏说之风也渐渐显现,当然这也不是第一次有某项技术被戏说,或者被放到了故事之中,甚至还有一本专门戏说设计模式的书出版。然而设计模式真的可以被戏说么?

首先来探索一下为什么会有戏说这种方式。设计模式刚出来的时候,被无数大牛所吹捧,凡是玩OO的一定要学,于是一时间设计模式风靡大江南北,凡是跟设计模式沾边的书一律大卖。甭管是懂不懂OO的,有经验没经验的,真会的假会的,张口闭口设计模式。如果你没法随口说出几个模式、没法随手画个UML还真不好意思和别人打招呼。然而四人帮的原版《设计模式》还真不好学,不好懂。文字是文邹邹的,一大堆适用不适用的环境,实现方法还不止一个(如adapter),再加上模式之间的UML又有几分相似,真正把一本书啃下来都很困难。因此,一些帮助你更容易的理解和学习设计模式的文章和图书涌现出来,比如《设计模式解析》。然而还是有一些人觉得设计模式太难,无法领会其中的思想,纷纷表示需要更简单的方式,那么作为已经理解设计模式的前辈自然要帮助一下后辈了,于是各种戏说出现了,还有一本书《大话设计模式》。

有句话说得好:“容易学的东西,价值一定也不高”。如果一个东西大家一学就会了,那就变成一件和吃饭喝水呼吸一样自然的事了,人人都会自然价值就低了。设计模式作为一种前人总结出来的方法,其价值是很大的。虽然说随着软件技术的发展,它迟早也会变得和数据结构、面向对象一样成为一个很普遍的东西,但是它自身的复杂性决定了它的价值是不会变的,即使掌握的人越来越多,其本身的意义仍然存在,也正是它的价值决定了它同样不好学。那么这些戏说的书又如何让它变的好学了呢?

我当初在读了《设计模式》以后,完全是死记硬背,因为经验还不够,所以无法理解许多模式的缘由和好处。后来为了能更好理解,又看了一下《设计模式解析》这本被很多人推崇和称赞的好书。然而看了一半,就觉得和《设计模式》不在一个档次上,它为了让设计模式更易懂,去掉了很多《设计模式》中的内容,学的东西少了、描述的文字却没少,当然好学了。若干年后,我已经对设计模式有了些经验,我又看了《大话设计模式》,从中我没有学到任何与设计模式有关的东西,拿来看纯脆是因为里面的戏说,而非设计模式本身。可以说它比《设计模式解析》讲的东西又少了一些。于是乎,越是戏说,里面的东西就越少,离真正的设计模式也就越远。

设计模式本身是一种在特定环境下解决特定问题的方式和方法,只因为某些特定环境下的特定问题比较常见,因此才总结成一本书和23和设计模式。然而在实际环境中,这些问题和这些环境也都是不完全相同的,而且有些环境和问题本不相同,解决的方案却很类似。这导致作者花费了大量笔墨来描述每个模式的动机是什么(解决什么问题),有什么样的好出,有什么样的副作用,以及一些变通/变种的实现方法,当然还有一个UML和参考实现代码。但是在后面的一些想让设计模式更容易学的书里,或多或少的都去掉了一些内容,最常见的就是使用环境和副作用,而保留的最多的是代码和UML图,动机部分则一般说的不清不楚。

那到底设计模式可不可以戏说呢?我觉得可以,戏说可以让你在学习的时候轻松一点,笑一笑,心情更好,也让你对学习设计模式更感兴趣。但是,戏说也只是戏说,不可完全当真,以为这就是设计模式的全部了。真正要学习设计模式,戏说只是个开始,更需要大量的实践来理解贯通,需要对OO的掌握,需要项目的经验。对于已经掌握设计模式的人,戏说就是个调节,看个乐;对于还没入门的人来说,戏说是个有趣的敲门砖,是个可以帮你开始的地方,然而不管看了多少戏说,你所学到的都不是设计模式(而是参考的实现),最后始终是要拿起《设计模式》才能看到真正的设计模式。

PS:不知不觉设计模式已经走过十多年了,期待能有一本修订本,加入这十多年间设计模式的变更与进步。

转载于:https://www.cnblogs.com/wangyh/archive/2009/07/19/design-pattern-in-kidding.html

设计模式可以戏说么?相关推荐

  1. 大话设计模式(十四 设计模式不能戏说!设计模式怎就不能戏说?)

    (续上篇) 次日,小菜来到大鸟处.        "大鸟,你在写什么东西?"小菜看到大鸟的电脑上开着记事本.        "哦,我打算写篇博客,名字就叫<设计模式 ...

  2. [活动]《博客园精华集》设计模式分册第2轮筛选结果公示

    说明 <博客园精华集>设计模式分册第2论筛选结果,总共有284篇,主要由TerryLee.idior.怪怪三人完成.在经过第三轮打分之后,还会有很多的文章出局.请大家发现以下文章中有转载或 ...

  3. 《设计模式》(精华集)

    Web Client Software Factory系列(3):View-Presenter模式作者: TerryLee .NET设计模式(18):迭代器模式(Iterator Pattern)作者 ...

  4. 设计模式(博客园精化集)〈转〉

    转自:http://blog.csdn.net/tuwen/archive/2011/03/04/6224179.aspx Web Client Software Factory系列(3):View- ...

  5. 《设计模式》(博客园精华集)

    转自:http://archive.cnblogs.com/a/1720782/  在此非常感谢谢博主 圣殿骑士 Web Client Software Factory系列(3):View-Prese ...

  6. 戏说模式-追MM与设计模式 (转载)

    创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就 ...

  7. 为什么戏说php,戏说PHP——1.1切的开始

    戏说PHP--1. 一切的开始 最近总想写点什么,但又想不起写什么,那就整理下自己捣腾过的东西吧,一切开始于一个月黑风高的夜晚-- 咔嚓一个炸雷,56k小猫烧了,裤子都脱了,一片漆黑中,顿时赶脚头晕目 ...

  8. 为什么戏说php,戏说PHP——1. 1切的开始

    戏说PHP--1. 一切的开始 最近总想写点什么,但又想不起写什么,那就整理下自己捣腾过的东西吧,一切开始于一个月黑风高的夜晚-- 咔嚓一个炸雷,56k小猫烧了,裤子都脱了,一片漆黑中,顿时赶脚头晕目 ...

  9. 【Design pattern】设计模式思路总结(一)

    看了一周的设计模式,跟着小菜的思路走! 从简单工厂过渡策略,后面看的这几个模式都是在单一职责,开放--封闭原则,依赖倒转原则下不断的改进,采用模式写出的代码更容易扩展,维护! 比较容易懂. 装饰模式: ...

最新文章

  1. 驳Linux不娱乐 堪比Win平台中十款播放器
  2. 【已解决】TypeError: bind() takes exactly one argument (2 given)
  3. sketchup生成面域插件_独家教程 | 快速抓取“高精准”场地信息,康石石教你生成不同“体量”地形...
  4. 晴天php下载,x.php · 一步晴天/smart - Gitee.com
  5. 大数据之Kafka集群安装及简单使用
  6. UVa 1153 Keep the Customer Satisfied 【贪心 优先队列】
  7. 带你学习ES5中新增的方法
  8. mvc VIEW部分介绍
  9. 增强环路现象!? 为你揭示云计算魔力!
  10. 为什么我的眼里常含泪水,因为Mysql让我变的深沉(2021最新版mysql安装)
  11. 苹果mac强大的截图录像工具:Snagit
  12. DDPush 任意门消息推送 开源免费实时信息推送服务器
  13. 360全景地图 android,Android-谷歌VR展示360度全景图
  14. C++ ISBN 号码
  15. 计算机毕业设计项目推荐(源码+论文+PPT)
  16. c语言ld怎么声明,ld C语言编程开发
  17. 通过网线连接两台主机
  18. beini奶瓶-无线网络蹭网破解-简明说明
  19. Exception evaluating SpringEL expression: ***错误的一个解决办法
  20. vue项目内存溢出的解决

热门文章

  1. vue整合videojs插件,播放RTMP,hls直播视频
  2. Qt使用导出类报错:error C2491: “LmcThreadPaddle::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义
  3. python的知识体系_最新Python知识体系梳理
  4. 大学生如何让自己强大起来(计算机、电子方向)
  5. ZXing vs ZBar: 开源条形码SDK性能PK
  6. pytorch入门学习(四)-----计算图与动态图
  7. Intel系统编程指南第八章——8.4 多处理器(MP)初始化
  8. 初次注册知乎账号,不小心遭受系统限制,该如何解封?
  9. 电脑声卡驱动正常但是没有声音怎么办 电脑声卡坏了怎么办
  10. 计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档)