学习设计模式的捷径

本文的最新版在《大道至简:实话设计模式》:

理解、掌握设计模式真有那么难吗?我们这个世界存在着简单的科学真理,复杂的设计模式表象背后自然也存在简单的客观现实。学习和掌握设计模式有役有什么技巧、窍门和捷径呢?有。

1、较法

我最喜欢用、极力向大家推荐的第一种科学学习方法是比较法。在23个GoF设计模式中,有不少模式存在着相似性,在使用时很容易混淆。通过认真细致的比较,我们不但可以发现一组彼此相似或相关的设计模式之间的真正差异点,而且还可以用一组、一批模式整体学习的方式取代(或弥补)逐个模式孤立学习记忆的方式,从而起到加深记忆、提高学习效率、促进准确运用的效果。

2、图形建模法

我最喜欢用、极力向大家推荐的第二种科学方法是图形建模法(用UML记忆、思考和分析设计模式)。学习设计模式切忌死记硬背。最好做到只要一听到某个设计模式的名称,就能迅速在自己的大脑中,投射或浮现出这个设计模式的哪L标准静态图(如类图)和动态图(如序列图、通信图、状态图等等),这远比直接投射或浮现出一行行的高级程序设计语言源代码要艺术、敏捷和高效得多。

有经验的oo程序员知道,设计模式的抽象层次要比具体的oo编程语言高一层,用图形化的抽象建模语言来描述设计模式,最简单,也最形象。同一个设计模式,既可以用Jaya、C#、vB.NeT实现,也可以用Delphi、c++、Ruby或JavascriPt.等其他各类oo编程语言实现。所以,企图通过死记硬背程序源代码来记忆设计模式的方式,不但让我们很难看到(或分析、比较)设计模式的本质特征,而且也是非常低效和错误的。

3、比喻法

第三种最常用的设计模式学习方法是比喻法,或叫比拟法、类比法。我们常常可以把设计模式同现实世界中某一个或某一些为人所熟悉的形象比喻联系起来,以便领会和掌握它们的基本结构和特点,加深对模式的记忆和理解。

事实上,很多设计模式的名称原本就是一种比喻或对现实世界的模拟,例如,抽象工厂、桥、职责链、中介、访问者等等。熟练地运用比喻法可以产生这样的效果,一听到某个设计模式的名称,脑子里就能马上联想到它的比喻,进而浮现出它的结构图(UML图形)。

比喻法之所以简单而有效,根本原因是因为软件设计活动本质上就是一种建模活动,而且由于我们是人类,我们,息是会自觉不自觉地在软件程序中模拟、效仿现实世界中自己所熟悉的各种物质、概念及其运动规律。

通过打比方、比喻、类比,乃至用说俏皮话、调侃和无厘头的方式来学习设计模式,可能是一种不错的学习方式,能够寓教于乐,收到奇效。然而,运用比喻法需要注意的一个问题是:不要滥用比喻。为某个设计模式找到一个非常贴切、形象的比喻并非一件易事。现有很多设计模式比喻的问题是不像,役有抓住模式的基本特征(我也不一定能做得更好)。此外在拿设计模式与现实世界、人类社会作类比的时候,最好也不要扯得太远,以简明为宜。

4、重视00D原则和方法

第四,我认为最重要的也是被许多人所忽视的一个学习要领是:

通用的原则与方法高于具休的模式和做法(ceneralPrinCiple:andHeth。d,。verc。ncretePattern:and

Proctices)有没有什么东西比设计模式更重要?有!满脑子只有设计模式是不对的,其实这个世界上比设计模式更重要、更高级的事物还有很多,比方,设计原则和方法,尤其是00D原则和方法,抽象、普适的原则和方法比具体、个别的模式、做法和解法更重要,其实所有的设计模式都是根据某种或某些软件设计的基本思想、原则和方法而创造出来的。

 

 

源文档 <http://www.chinaar.com/html/shejimoshi/2009/1009/336.html>

 

posted @ 2011-04-09 21:11  CharmingDang  阅读(74)  评论(0编辑  收藏  举报