Web 设计模式中的PAC模式的全称是表示-抽象-控制(Presentation-Abstraction-Control,PAC)体系结构模式以合作agent的层次形式定义了交互软件系统的一种结构。
PAC模式定义
表示-抽象-控制(Presentation-Abstraction-Control,PAC)体系结构模式以合作agent的层次形式定义了交互软件 系统的一种结构。每个agent负责应用程序功能的某一特定方面,并且由表示、抽象和控制三个组件构成。这种细分将agent的人机交互与其功能内核和它 与其他agent的通信分隔开来。
结构
PAC模型以树状层次结构构建交互式应用层次。PAC agent共分三层:顶层PAC agent,底层PAC agent和中层PAC agent。但要注意的是,PAC并不是每个字母对应一层。后面,出现“agent”的地方与“PAC agent”同义。
顶层agent负责系统的核心功功能。比如说建立在一个数据仓库上的应用程序,顶层agent就相当于访问数据仓库的接口。
底层agent表达了独立的语义概念。比如,负责显示功能的agent,柱状图、饼图等各种视图都可以通过一个agent来控制。底层agent负责直接跟用户打交道,也就是除了显示数据还可以接收输入。
中层agent则是负责沟通底层和顶层agent。注意中层agent并不一定直接就和底层agent通信。因为中层agent中也可以分层次,高级别的中层agent管理低级别的中层agent,这个就有点像树里面的非叶子节点。
个人认为说agent分为三层还不如说agent分为三类。虽然,这样表述系统层次结构不太明显,但是起码不会和层次模型混淆。
与MVC模型比较,PAC负责UI的底层agent不再依赖于核心功能的顶层agent。其关键在于加进了中层agent作为它们直接的桥梁。这样,核心 功能和显示真正的分开,而可以分别实现修改而不会严重影响系统其他部分。另外一个关键点是,agent之间通过一种尽可能小的接口进行通信(比如只有 send和receive),那么当某些agent要做修改,它只要保持通信内容格式的一致性,其他的agent就不需要作修改。
效果
Agent在实现的时候可以很容易分到独立的进程或线程中,所以PAC模式很容易支持多任务和分布式。各个agent之间的耦合降到很低,所以变化和扩展都很容易。
这种模型同时也存在一些问题,其中比较主要的就是通信的开销。特别是在中层agent层次较深的时候,这个问题尤其明显。
PAC模型两个已知应用是网络通信量管理,也就是ZX管理agent以及派出的多个监测agent。另一个例子是移动机器人。