时间:2015-08-27 09:36 文章来源:http://www.lunwenbuluo.com 作者:蔚鹏志 点击次数:
本文针对人机交互框架的业务需求特点,提出了一个基于MVC模式的人机交互软件框架模型。并在此模型的基础上进行了软件架构设计,并在Linux操作系统开发环境下,利用C++语言完成了框架的开发。
【关键词】MVC人机交互框架
人机交互软件需要向用户提供显示界面,展示数据,并对用户在界面的操作给出回应。很多用户也希望在保持功能不变的基础上,可以方便快捷地调整操作界面,这也是提高软件可扩展性和可复用性的要求。MVC模式将软件的操作界面和数据模型独立出来,对显示界面的调整不会影响数据模型,降低了软件模块之间的耦合性,是比较适合用来开发人机交互框架的设计模式。
1MVC模式
MVC是一种很流行的设计模式,在人机交互类的系统中被广泛应用。它把一个系统分为三个部分:模型(Model)、视图(View)和控制器(Controller)。模型用来管理数据,它封装了系统使用的数据,提供了操作这些数据的接口,视图用来提供给用户界面,定义了需要显示的数据以及数据显示的方式,控制器用于处理用户对视图的操作,并传递给数据模型。
MVC模式的核心思想就是功能分离。图1表示了MVC模式三个部分的功能和相互之间的关系,实线代表调用了接口,虚线代表返回了结果。
2软件架构设计与实现
人机交互框架的架构如图2所示。整体的框架采用了MVC模式。
整个框架的界面显示部分在View类中实现,在具体实现中使用了工厂模式,把所有的界面控件元素全部抽取出来,提供了统一的显示风格,提高了代码的复用性,这些控件元素包括Button(按钮)、SoftKey(软键盘)、TableWidget(表格)、LineEdit(输入框)等,这样以来即便把界面部分剥离出去,那么这些控件仍可以被复用,不受影响。所有的屏幕显示是由不同的控件来组成,而View来负责不同控件显示之间的切换以及整个界面的布局。
框架的设计遵循了“界面和数据高度分离”的原则,实现系统各部分之间的模块化,尽量保证界面和数据两个模块之间的耦合性降到最低,模块内部的内聚性达到最高。用户界面的呈现由View类来负责,数据的存储和处理由Model类来负责。这两个类之间需要进行交互,因为用户对界面进行操作后需要将操作过程传递给数据模型,数据模型根据操作的类型做出处理,数据处理结束后给用户界面返回一个结果,结果需要呈现在界面上。
Observer(监听者)模式可以用来实现View类和Model类之间交互的功能。具体实现的方法如下:首先,Control实现Observer的接口,对用户界面的更新及显示进行一定程度的封装。然后Control通过变量m_Model传递一个Observer给Model,从而实现对Model部分的监听,当Model中的数据发生改变时,会通知Observer。这样Control就建立起了View和Model之间的联系。
View类和Model类里分别实现了一个ControlQueue队列和一个EventQueue队列。ControlQueue队列运行在前台,负责维护View上所有的控件以及控制控件的显示,它对用户的输入进行解析,包括应该显示哪些控件,以及处理这些控件相对应的消息。EventQueue队列在后台运行,它负责对消息的维护。它在Model类中的监听线程中被监听,一旦Model中的数据发生了变化,就会发送一定格式的数据包,一旦监听到了数据包,就会按照约定的解包规则解析这个数据包的具体含义,解析完成以后调Observer把数据的状态变化反映到View类里,View类将变化后的数据展示给用户。这样就能实现了界面和数据的分离,界面和数据模块之间不需要实现相互之间的调用,耦合度很低。
3结论
本文首先对MVC模式各部分的功能和关系进行了简单介绍,然后提出了一个基于MVC模式的人机交互软件框架模型。在此模型的基础上进行了人机交互框架的架构设计和实现。采用本文提出的设计方法,该框架不仅能够满足当前人机交互框架的实际应用需求,而且具有以下三个突出的优点:
(1)界面和数据的低耦合性,即把界面显示和数据的处理完全分离开来,界面和数据分别为独立的模块,把它们之间的交互减少到了最低。
(2)在设计中主要采用MVC、工厂模式和Observer模式等流行设计模式,程序结构清晰,容易理解。
(3)模块内部有很强的内聚性,任何一个模块都实现了独立的功能,对其他模块依赖很小,一个模块的修改并不会对其它模块产生大的影响,有利于协同开发。
参考文献
[1]覃征,邢剑宽,董金春.软件体系结构[M].北京:电子工业出版社,2008:28-39.
[2]韩怿冰.MVC模式浅析[J].科技信息,2007,1(25):351.
联系方式
随机阅读
热门排行