本章将介绍8种架构模式:Layers, Pipes and Fllters. Blackboard. Broker, Model-View-Controller,
Presentation-Abstractlon-Control,Microkernel and Reflection
非常酷的章节,原来我们现在流行的很多软件的模式都已经在20年前被定义了(本书1996年出版)。
介绍
架构模式是模式系统中高层次的模式。它帮我们定义一个应用的基础结构。我们把架构模式分成4类:
- 从混沌到结构化(from mud to structure)。这种模式避免你陷入组件和对象的海洋,简而言之他帮助把一个总体系统分解成协作的子任务。这种模式包括layers分层,pipes管道,filters,过滤和blackboard黑板。
- 分布式系统。这类模式有broker(代理),还有一个奇怪的三者联合microkernel+pipes+filters。broker模式估计是当下经典的分布式系统模式
- 交互系统。它包括两个:Model-View-Controller和Presentation-Abstraction-Control。这两个都适合人机交互软件。
- 适配系统。reflection和microkernel模式都适用与应用扩展和需求经常变化的系统。
笔者话:貌似现在的软件都没有逃出这些架构。
不同的架构模式可能会有不同的结果,即使他们属于同一类。比如MVC通常比PAC更高效,但PAC比MVC更支持多任务和特定人物用户接口。而且我们很多情况会把多种模式结合起来使用而不是只用其中一个。例如你要设计一个在各种不同网络中的灵活组件发布系统,又要兼顾 用户接口的灵活性。这样你得MVC和broker两者结合。(这个例子很诡异)
从混沌到结构化
- 分层模式:允许你把任务分成多个子任务,而且这些子任务属于不同的抽象层。这种模式是应用最广的一种模式,
- 管道+过滤器模式:提供了一种处理数据流的结构。每个处理步骤封装称一个filter,数据被在不同的filter之间的管道中传输。不同的filter组合可以让你构建不同系统。(这就是flink用的模式吧)
- 黑板模式。这种模式适用于没有确定解决方法的情况。在黑板中几个子系统集合起来构建一个可能的解决方案。(无解+尝试解决)这个模式居然来自人工智能领域,
layers
The hyers architectural pattern helps to structure applications that
can be decomposed into groups of subtasks in which each group of
subtasks is at a particular level of abstraction.
网络协议是最好的分层模式例子。
这种模式设计比较简单,但你不得不平衡以下限制force:
- 后续源码改动不能影响系统,比如一个组件改动不影响另外一个。
- 接口必须稳定,或至少能从某一个固定实体获取。
- 系统的某个组件需要能被交换。比如一个组件被替换了不会影响剩下的。