云端架构:基于云平台的41种可复用的架构最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1.1 设计模式的来源

在软件开发中经常听到的“设计模式”一般是指Erich Gamma的《设计模式——可复用面向对象软件的基础》一书提出的23个软件设计模式,其中囊括了软件开发中重复使用的架构设计方法,无论是PHP、Java、Python,还是Go等开发语言,都能参照这些设计模式。这23种设计模式同样包含使用意图、别名、动机、适用性、结构、参与者、协作、效果等,是对一类问题的归纳总结,并且可以在其他相同背景、相同问题的场景中进行复用。

追踪溯源,“设计模式”概念并不是Erich Gamma首创的,其最早来自美国建筑设计师Christopher Alexander(克里斯托弗·亚历山大)的《建筑的永恒之道》,其中总结了建筑行业千百年来已经存在并被使用的架构经验和方法,这些建筑设计模式就像“行业指南”一样指导着每个入行的建筑设计师将这些架构经验和方法应用到每个建筑中。建筑行业的设计模式和软件行业的设计模式竟然有这些相同点。从此我们可以尝试对设计模式进行定义,设计模式由背景说明(上下文)、问题、解决方案组成,是用来提炼解决针对性问题的可重复使用的方案模块。Christopher Alexander提出了设计模式的概念,此概念高度抽象,其理念不仅适用于建筑行业,还适用于其他行业和场景。Erich Gamma将设计模式引用到软件开发中,将软件开发中最重要的23条经验整理成软件开发设计模式。目前设计模式已经从建筑行业、软件开发架构发展到其他架构设计,拓展了游戏架构设计模式、敏捷管理设计模式等领域。设计模式的核心观点是从大量解决方案及应用案例中总结可复用的模块,并在实际工作中应用。除了设计模式,还有一种“反模式”,也就是违反良好设计模式的做法,在本书中我们统一称其为“坏味道”(Bad Smell)。