用一种新的分类方法梳理设计模式的脉络

设计模式是程序员们长期实践经验的总结,被认为是面向对象方法的"刀刃"部分。

1990年代出版的《Design Patterns》收录了23种设计模式,总结了一些有益的设计原则,为这份实践经验的理论化做出了开创性贡献。

我们经常引用《Design Patterns》中的观点将这些设计模式分成创建型、结构型与行为型三大类。

然而这种分类方法具有一定的迷惑性,容易掩盖设计模式的思考路径与内在联系,想凭此从宏观上把握和理解这些设计模式的初学者往往陷于困惑。

一方面想借鉴经验,另一方面需要付出较高的学习成本,这种尴尬的境地促使我们继续进行理论层面的创新。

笔者尝试建立新的分类方法,并逐步揭示设计模式的思考路径与内在联系,使它们更具理论价值,更容易理解和应用。

万事开头难,我"摆弄"这些设计模式的时候,发现情况非常棘手。创作者们的想法无从考证,眼下这些设计模式又各有所指,想有效地组织它们,还需要一个好的思想方法。

幸运的是,我读到了一篇名为《The Early History Of Smalltalk》的论文。作为面向对象领域的先驱语言之一,Smalltalk曾于1970年代取得过前所未有的成功,为后来者C++、C#、Java等语言提供了营养。作者Alan Kay(一位远见卓识的大叔)在这篇论文中回顾了Smalltalk的发展历史,还特意论述了他心目中的面向对象风格(object-oriented style)。

我似乎明白了什么,在更长的历史当中,程序员们是这般求索的。所谓的"设计模式",正是源于"面向对象风格是什么样的"这样朴素的思考。

当我回到面向对象风格的叙事中,去做一些简单的提问与推理,那些困扰我的难题渐渐露出答案。找到了这条返璞归真的道路,接下来的事情顺利得多。

我花了两年的时间,写了这些短文。着墨不多,但试图把设计模式的脉络梳理明白。

这里没有复杂的项目背景,也没有高深的系统机制。只需放松心情,准备领略几十年间程序员们的奇思妙想。

我选了一些古诗文作为示例素材,它们是《江南》《饮湖上初晴后雨》《草虫》《天净沙・秋思》《琵琶行》《木兰诗》《桃花源记》......

这些优美的词句将是沿途的风景,希望您的阅读像一次充满乐趣的旅行。

请戳这里:"简明设计模式"合集