《设计模式沉思录》—第1章1.2节观察

简介: 澄清了这些误解之后,人们对设计模式的反应不外乎有两种。下面我会通过一个类比来对它们进行描述。

本节书摘来自异步社区《设计模式沉思录》一书中的第1章,第1.2节观察,作者【美】John Vlissides,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 观察
澄清了这些误解之后,人们对设计模式的反应不外乎有两种。下面我会通过一个类比来对它们进行描述。

设想有一个电子爱好者,虽然他没有经过正规的培训,但是却日积月累地设计并制造出了许多有用的电子设备:业余无线电、盖革计数器④ 、报警器等。有一天这个爱好者决定重新回到学校去攻读电子学学位,来让自己的才能得到正式的认可。随着课程的展开,这个爱好者突然发现课程内容都似曾相识。似曾相识的不是术语或表述的方式,而是背后的概念。这个爱好者不断学到一些名称和原理,虽然这些名称和原理原来他并不知道,但事实上他多年以来一直都在使用。整个过程只不过是一个接一个的顿悟。

现在让我们把镜头切换到一个大学新生,这个新生正在同一个班学习同样的课程。他没有电子学的背景,有的只是大量的轮滑经验,没错,但就是没有电子学的背景。对他而言,学习新课程极其吃力,这并不是因为他笨,而是因为这些内容对他来说完全是新的。这个新生需要花更多的时间来理解和领会所有的内容。通过努力学习再加上一点毅力,他最终完成了所有的课程。

如果你觉得自己像一个设计模式爱好者,那么你会更加有动力。如果你觉得自己更像一个新生,那么请振作起来:你在学习好的模式上的付出是不会白费的,只要将它们应用到自己的设计中就会得到回报。我保证。

但对有些人来说,电子学这个类比可能不太贴切,因为其中包含了“电子技师”的内涵。如果你也这样认为的话,那么不妨考虑一下Alfred North Whitehead在1943年说过的一句话,虽然是在不同的场合下说的,但它也许会更加贴切:

艺术就是将一种模式强加于经历,以及识别这种模式时所带来的审美享受。

①指此书英文版原书页码。——编者注

②我相信不会有比这个比喻更贴切的了。

③如果想订阅这个邮件列表,请发邮件到patterns-discussion-request@cs.uiuc.edu,并用单词“subscribe”作为邮件的标题(没有引号)。

④Geiger counter,一种用来探测放射能量的仪器。——译者注

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
C++ Windows
《设计模式沉思录》目录—导读
本书在GoF的《设计模式》一书的基础上进行了拓展,运用其中的概念,介绍了一些技巧,帮助读者决定在不同的情况下应该使用哪些模式,以及不应该使用哪些模式。本书不仅对已有的一些模式提出新的见解,还让读者见证开发新模式的整个过程。
1178 0
《设计模式沉思录》—第2章2.8节小结
我们已经将模式应用于文件系统设计的各个方面。COMPOSITE模式的贡献在于定义了递归的树状结构,打造出了文件系统的主干。PROXY对主干进行了增强,使它支持符号化链接。VISITOR为我们提供了一种手段,使我们能够以一种得体的、非侵入性的方式来添加与类型相关的新功能。
1233 0
|
JavaScript 前端开发 Unix
《设计模式沉思录》—第2章2.7节多用户文件系统的保护
无论是配以中枢文件系统的传统分时系统,还是当代的网络文件系统,对多用户的支持都是必不可少的。即使那些为单用户环境所设计的个人计算机操作系统(如OS/2和Windows NT),现在也已经支持多用户。无论是什么情况,多用户支持都给文件系统保护这一问题增加了难度。
1488 0
|
JavaScript 算法 前端开发
《设计模式沉思录》—第2章2.6节单用户文件系统的保护
经常使用计算机的人大都有过丢失重要数据的惨痛经历,起因可能只是一个不巧的语法错误,也可能是鼠标点偏了,或者只是深夜脑子突然不好使。在正确的时间删除一个错误的文件是一种常见的灾难。
867 0
|
C++ 设计模式 编译器
《设计模式沉思录》—第2章2.5节关于VISITOR的一些警告
如果所有的visitor对新的子类不感兴趣,而且我们已经定义了一个与visitNode等价的操作来在默认情况下进行合理的处理,那么就不存在问题。但是,如果只有一种类型的visitor对新的子类感兴趣,那么我们至少必须对该visitor和Visitor基类进行修改。
1081 0
《设计模式沉思录》—第2章2.4节访问权限
到目前为止我们已经运用了两个设计模式:我们用COMPOSITE来定义文件系统的结构,用PROXY来帮我们支持符号化链接。
1116 0
|
JavaScript 前端开发
《设计模式沉思录》—第2章2.2节孤儿、孤儿的收养以及代用品
现在让我们深入研究一下在我们的文件系统中运用COMPOSITE模式可能会得到什么样的结果。我们首先考察在设计Node类的接口时必须采取的一个重要折中,接着会尝试给刚诞生的设计增加一些新功能。
981 0
|
设计模式 API 程序员
《设计模式沉思录》—第2章2.1节基础
从用户的角度来看,无论文件有多大,目录结构有多复杂,文件系统都应该能够对它们进行处理。文件系统不应该对目录结构的广度或深度施加任何限制。从程序员的角度来看,文件结构的表示方法不仅应该容易处理,而且应该容易扩展。
1405 0
《设计模式沉思录》—第1章1.1节对模式的十大误解
这些日子,模式引起了大家强烈的兴趣,同时还伴随着一些迷惑、诧异和误解。这在一定程度上体现了主流软件开发人员认为这个领域有多么新,虽然从严格意义上说,它并不是一个新领域。
1215 0
|
15天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0