POSA1 是什么

《Pattern-Oriented Software Architecture, Volume 1: A System of Patterns》(简称 POSA1),1996 年出版,作者为 Frank Buschmann、Regine Meunier、Hans Rohnert、Peter Sommerlad、Michael Stal。

POSA1 关注的是架构模式(Architectural Patterns),粒度比 GoF(1994)的 23 种设计模式更大——GoF 解决的是类与对象之间如何协作,POSA1 解决的是整个系统应该如何组织。

GoF(1994) POSA1(1996)
模式级别 对象/类设计 系统/架构
典型模式 Strategy、Observer、Chain of Responsibility Pipes & Filters、Layers、Broker
解决问题 类之间如何协作 整个系统如何组织

POSA1 中的主要模式

Layers(分层)

将系统分解为若干层,每层只依赖下层,对上层屏蔽实现细节。典型实现:OSI 网络模型、TCP/IP 协议栈、三层架构(表现层 / 业务层 / 数据层)。

Pipes and Filters(管道-过滤器)

将数据处理拆分为一系列独立的 Filter,每个 Filter 负责单一转换,通过 Pipe 传递数据。整个系统是可组合的处理管道。

特征:

  • 每个 Filter 独立,不依赖其他 Filter 的内部状态
  • Filter 可以任意组合、复用、替换
  • 任何一个 Filter 可以短路,中断后续处理

经典实现:

  • Unix shell:cat file | grep foo | sort | uniq
  • Java Servlet FilterChain
  • Spring Security 的 SecurityFilterChain(兼具责任链的短路能力)
  • ETL 数据处理管道

与 GoF 责任链的区别:

GoF 责任链是"找到一个能处理的就停下",通常只有一个处理者真正响应;Pipes and Filters 是"每个 Filter 都参与处理,任意一个可以中断",整体更像流水线而非分拣队列。

Broker(代理/中介)

解耦分布式系统中的客户端与服务端,通过中间的 Broker 转发请求和响应。典型实现:CORBA、gRPC、消息队列中间件。

Model-View-Controller(MVC)

将应用分为 Model(数据与业务逻辑)、View(展示)、Controller(协调输入与模型更新)三个角色,降低 UI 与业务逻辑的耦合。GoF 书中也提到 MVC,但 POSA1 将其正式归类为架构模式。

Microkernel(微内核)

将系统最小核心功能放入内核,其余功能以插件形式扩展。典型实现:操作系统微内核(GNU Hurd)、Eclipse 插件体系、VS Code 扩展机制。

Reflection(反射)

允许系统在运行时检查和修改自身结构与行为,实现元级别的自适应。Java 反射 API、Spring IoC 容器的 Bean 发现机制均属此类。

参考