
3.2.2 面向对象的用户界面交互模型
常见的面向对象的用户界面交互模型包括MVC模型、PAC模型、PAC-Amodeus模型、LIM模型和YORK模型等。
MVC模型是1983年提出的面向对象的交互式系统概念模型,该模型是在Smalltalk编程语言环境下提出来的,由控制器、视图和模型三类对象组成,如图3-5所示。模型表示应用对象的状态属性和行为;视图负责对象的可视属性描述;控制器是处理用户的输入行为并给控制器发送事件。

图3-5 MVC模型
视图代表用户交互界面,随着应用的复杂性和规模性的增加,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上的数据采集和处理。
模型负责业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说是透明的,模型接收视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心,模型包含完成任务所需要的行为和数据。
控制器将模型映射到界面中。控制器处理用户的输入,每个界面有一个控制器。它是一个接收用户输入、创建或修改适当的模型对象并将其修改结果在界面中体现出来的状态机。控制器决定哪些界面和模型组件在某个给定的时刻应该是活动的,负责接收和处理用户的输入,来自用户输入的任何变化都被从控制器送到模型中。
MVC的目的是增加代码的重用率,减少数据的表达、数据描述和应用操作的耦合度,同时也使得软件的可靠性、可修复性、可扩展性、灵活性以及封装性大大提升。由于数据和应用分开,在新的数据源加入和数据显示变化的时候,数据处理也会变得更简单。
MVC的优点如下。
1)可以为一个模型在运行的同时建立和使用多个视图。
2)视图与控制器的可接插性。允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭,甚至在运行期间进行对象替换。
3)模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
MVC模型也有不足之处,主要表现如下。
1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
2)视图与控制器间过于紧密连接。视图与控制器是相互分离但又却是联系紧密的部件,如果视图没有控制器的存在,其应用是很有限的。
3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。
PAC模型是Coutaz于1987年提出的一种叫作多智能体的交互式系统概念模型,如图3-6所示。
垂直流表示对象之间的通信,水平流表示一个对象内部不同方面之间的通信。陈述用于定义用户在输入和应用的输出行为;提取对应于功能的语义信息,实现应用要完成的功能;控制负责对话控制、维护、表示和提取的一致性。不同PAC Agent的“陈述、提取和控制器”不同,最顶层的PAC用于实现交互系统中与应用有关的功能。PAC模型和MVC模型之间有以下四个重要的区别。
1)PAC模型中的Agent将应用功能与陈述、输入和输出行为封装在一个对象中。
2)PAC模型用一个独立的控制器来保持应用语义与用户界面之间的一致性。

图3-6 PAC模型
3)PAC模型没有基于任何一种编程环境。
4)PAC模型将控制器独立出来,更加符合UIMS的设计思想,可以用来表示用户界面不同的功能部分。
用户和系统的交互循环过程开始于用户在一个控制器上的动作。MVC模型具有两个特征,其一是在对话独立的前提下,允许语义和其视图直接相互通信;其二是将人机和交互处理与输出显示部分分离。