设计模式可以戏说么?

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

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

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

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

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

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

PS:不知不觉设计模式已经走过十多年了,期待能有一本修订本,加入这十多年间设计模式的变更与进步。
posted @ 2009-07-19 17:17  Nick Wang (懒人王)  阅读(2418)  评论(46编辑  收藏  举报