相关历史

Cristopher Alexander是模式之父,他的模式本质是以人为本的设计,其中是关于城镇、房屋和建筑物的设计。总的来说,这中方式对软件设计有很大的影响。1994年,“风尘四侠”(Eric Gamma、Richard Helm、Ralph Johnson和John Vlissides)出版了他们的书《Design Patterns: Elements of Reusable Object-Oriented Software》。这本书包括23个针对面向对象软件设计的模式,这些模式可分为三类:创造型、结构型和行为型。书中定义了软件行业的用语,以下是一些最著名的设计模式:

  • Creational 创建型模式
    • Factory method pattern 工厂模式
    • Singleton pattern 单例模式
  • Structural 结构型模式
    • Adapter 适配器模式
    • Bridge 桥接模式
    • Composite 组合模式
    • Decorator 装饰器模式
    • Facade 外观模式
    • Proxy 代理模式
  • Behavioural 行为型模式
    • Command 命令模式
    • Iterator 迭代器模式
    • Observer 观察者模式
    • Strategy 策略模式
    • Template method 模板模式
    • Visitor 访问者模式

一年后,Frank Buschmann、Regine Meunier、Hans Rohnert、Peter Sommerlad和Michael Stal出版了他们非常有影响力的 《Pattern-Oriented Software-Architecture: A System of Patterns》一书,简写为POSA,这本书是系列五部曲的第一部。它在1995年出版,有三类模式:架构模式、设计模式和习惯用法。许多模式都是现在的通用术语:

  • Architectural Patterns 架构模式
    • Layers 层模式
    • Pipes and Filters 管道和过滤器模式
    • Broker 经纪人模式
    • Model-View-Controller 模型-视图-控制器模式
  • Design Patterns 设计模式
    • Master-Slave 主从模式
    • Publish-Subscriber 发布和订阅者模式
  • Idioms 习惯用法
    • Counted-Pointer 计数器模式

这三个类别有什么区别呢?体系结构模式的重点是整个软件系统,比定义相互作用的设计模式更加抽象。习惯用法是特定编程语言中体系结构或设计模式的实现,也是三者中抽象层次最低的。

POSA系列的第2卷至第5卷都有不同的关注点。他们处理并发”模式和网络对象”(第2卷),“资源管理模式”(第3卷),“分布式计算的模式语言”(第4卷),“模式和模式语言”(第5卷)。本书的同步模式和并行架构部分,深受系列的第2卷的影响。