设计模式可以戏说么?
首先来探索一下为什么会有戏说这种方式。设计模式刚出来的时候,被无数大牛所吹捧,凡是玩OO的一定要学,于是一时间设计模式风靡大江南北,凡是跟设计模式沾边的书一律大卖。甭管是懂不懂OO的,有经验没经验的,真会的假会的,张口闭口设计模式。如果你没法随口说出几个模式、没法随手画个UML还真不好意思和别人打招呼。然而四人帮的原版《设计模式》还真不好学,不好懂。文字是文邹邹的,一大堆适用不适用的环境,实现方法还不止一个(如adapter),再加上模式之间的UML又有几分相似,真正把一本书啃下来都很困难。因此,一些帮助你更容易的理解和学习设计模式的文章和图书涌现出来,比如《设计模式解析》。然而还是有一些人觉得设计模式太难,无法领会其中的思想,纷纷表示需要更简单的方式,那么作为已经理解设计模式的前辈自然要帮助一下后辈了,于是各种戏说出现了,还有一本书《大话设计模式》。
有句话说得好:“容易学的东西,价值一定也不高”。如果一个东西大家一学就会了,那就变成一件和吃饭喝水呼吸一样自然的事了,人人都会自然价值就低了。设计模式作为一种前人总结出来的方法,其价值是很大的。虽然说随着软件技术的发展,它迟早也会变得和数据结构、面向对象一样成为一个很普遍的东西,但是它自身的复杂性决定了它的价值是不会变的,即使掌握的人越来越多,其本身的意义仍然存在,也正是它的价值决定了它同样不好学。那么这些戏说的书又如何让它变的好学了呢?
我当初在读了《设计模式》以后,完全是死记硬背,因为经验还不够,所以无法理解许多模式的缘由和好处。后来为了能更好理解,又看了一下《设计模式解析》这本被很多人推崇和称赞的好书。然而看了一半,就觉得和《设计模式》不在一个档次上,它为了让设计模式更易懂,去掉了很多《设计模式》中的内容,学的东西少了、描述的文字却没少,当然好学了。若干年后,我已经对设计模式有了些经验,我又看了《大话设计模式》,从中我没有学到任何与设计模式有关的东西,拿来看纯脆是因为里面的戏说,而非设计模式本身。可以说它比《设计模式解析》讲的东西又少了一些。于是乎,越是戏说,里面的东西就越少,离真正的设计模式也就越远。
设计模式本身是一种在特定环境下解决特定问题的方式和方法,只因为某些特定环境下的特定问题比较常见,因此才总结成一本书和23和设计模式。然而在实际环境中,这些问题和这些环境也都是不完全相同的,而且有些环境和问题本不相同,解决的方案却很类似。这导致作者花费了大量笔墨来描述每个模式的动机是什么(解决什么问题),有什么样的好出,有什么样的副作用,以及一些变通/变种的实现方法,当然还有一个UML和参考实现代码。但是在后面的一些想让设计模式更容易学的书里,或多或少的都去掉了一些内容,最常见的就是使用环境和副作用,而保留的最多的是代码和UML图,动机部分则一般说的不清不楚。
那到底设计模式可不可以戏说呢?我觉得可以,戏说可以让你在学习的时候轻松一点,笑一笑,心情更好,也让你对学习设计模式更感兴趣。但是,戏说也只是戏说,不可完全当真,以为这就是设计模式的全部了。真正要学习设计模式,戏说只是个开始,更需要大量的实践来理解贯通,需要对OO的掌握,需要项目的经验。对于已经掌握设计模式的人,戏说就是个调节,看个乐;对于还没入门的人来说,戏说是个有趣的敲门砖,是个可以帮你开始的地方,然而不管看了多少戏说,你所学到的都不是设计模式(而是参考的实现),最后始终是要拿起《设计模式》才能看到真正的设计模式。
PS:不知不觉设计模式已经走过十多年了,期待能有一本修订本,加入这十多年间设计模式的变更与进步。
转载于:https://www.cnblogs.com/wangyh/archive/2009/07/19/design-pattern-in-kidding.html
设计模式可以戏说么?相关推荐
- 大话设计模式(十四 设计模式不能戏说!设计模式怎就不能戏说?)
(续上篇) 次日,小菜来到大鸟处. "大鸟,你在写什么东西?"小菜看到大鸟的电脑上开着记事本. "哦,我打算写篇博客,名字就叫<设计模式 ...
- [活动]《博客园精华集》设计模式分册第2轮筛选结果公示
说明 <博客园精华集>设计模式分册第2论筛选结果,总共有284篇,主要由TerryLee.idior.怪怪三人完成.在经过第三轮打分之后,还会有很多的文章出局.请大家发现以下文章中有转载或 ...
- 《设计模式》(精华集)
Web Client Software Factory系列(3):View-Presenter模式作者: TerryLee .NET设计模式(18):迭代器模式(Iterator Pattern)作者 ...
- 设计模式(博客园精化集)〈转〉
转自:http://blog.csdn.net/tuwen/archive/2011/03/04/6224179.aspx Web Client Software Factory系列(3):View- ...
- 《设计模式》(博客园精华集)
转自:http://archive.cnblogs.com/a/1720782/ 在此非常感谢谢博主 圣殿骑士 Web Client Software Factory系列(3):View-Prese ...
- 戏说模式-追MM与设计模式 (转载)
创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就 ...
- 为什么戏说php,戏说PHP——1.1切的开始
戏说PHP--1. 一切的开始 最近总想写点什么,但又想不起写什么,那就整理下自己捣腾过的东西吧,一切开始于一个月黑风高的夜晚-- 咔嚓一个炸雷,56k小猫烧了,裤子都脱了,一片漆黑中,顿时赶脚头晕目 ...
- 为什么戏说php,戏说PHP——1. 1切的开始
戏说PHP--1. 一切的开始 最近总想写点什么,但又想不起写什么,那就整理下自己捣腾过的东西吧,一切开始于一个月黑风高的夜晚-- 咔嚓一个炸雷,56k小猫烧了,裤子都脱了,一片漆黑中,顿时赶脚头晕目 ...
- 【Design pattern】设计模式思路总结(一)
看了一周的设计模式,跟着小菜的思路走! 从简单工厂过渡策略,后面看的这几个模式都是在单一职责,开放--封闭原则,依赖倒转原则下不断的改进,采用模式写出的代码更容易扩展,维护! 比较容易懂. 装饰模式: ...
最新文章
- 驳Linux不娱乐 堪比Win平台中十款播放器
- 【已解决】TypeError: bind() takes exactly one argument (2 given)
- sketchup生成面域插件_独家教程 | 快速抓取“高精准”场地信息,康石石教你生成不同“体量”地形...
- 晴天php下载,x.php · 一步晴天/smart - Gitee.com
- 大数据之Kafka集群安装及简单使用
- UVa 1153 Keep the Customer Satisfied 【贪心 优先队列】
- 带你学习ES5中新增的方法
- mvc VIEW部分介绍
- 增强环路现象!? 为你揭示云计算魔力!
- 为什么我的眼里常含泪水,因为Mysql让我变的深沉(2021最新版mysql安装)
- 苹果mac强大的截图录像工具:Snagit
- DDPush 任意门消息推送 开源免费实时信息推送服务器
- 360全景地图 android,Android-谷歌VR展示360度全景图
- C++ ISBN 号码
- 计算机毕业设计项目推荐(源码+论文+PPT)
- c语言ld怎么声明,ld C语言编程开发
- 通过网线连接两台主机
- beini奶瓶-无线网络蹭网破解-简明说明
- Exception evaluating SpringEL expression: ***错误的一个解决办法
- vue项目内存溢出的解决
热门文章
- vue整合videojs插件,播放RTMP,hls直播视频
- Qt使用导出类报错:error C2491: “LmcThreadPaddle::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义
- python的知识体系_最新Python知识体系梳理
- 大学生如何让自己强大起来(计算机、电子方向)
- ZXing vs ZBar: 开源条形码SDK性能PK
- pytorch入门学习(四)-----计算图与动态图
- Intel系统编程指南第八章——8.4 多处理器(MP)初始化
- 初次注册知乎账号,不小心遭受系统限制,该如何解封?
- 电脑声卡驱动正常但是没有声音怎么办 电脑声卡坏了怎么办
- 计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档)