
本文针对人机交互框架的业务需求特点,提出了一个基于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.
(www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/
CSSCI核心/医学投稿辅导/职称投稿辅导。
投稿邮箱:fabiaoba365@126.com
在线咨询:
275774677、
1003180928
在线咨询:
610071587、
1003160816
联系电话:13775259981
期刊简介: 《种子科技》(月刊)创刊于1983年,曾用刊名:(种子通讯)是中国种子协...
主管单位:湖北省国资委 主办单位:湖北省经济干部管理学院 出版地:湖北省武汉市 国...
主管单位:山东省教育厅 主办单位:山东省教委 国内刊号:CN 37-1025/G4 国际刊号:IS...
期刊简介: 《高等工程教育研究》是我国第一份、也是唯一一份面向工程教育研究的全国...
期刊简介: 主管单位:吉林省社会保险事业管理局 主办单位:吉林省人力资源和社会保障...
主管单位:国家民族事务委员会 主办单位:西北民族大学 出版地:甘肃省兰州市 国际标...
近来发现有些作者论文投稿存在大量剽窃、抄袭行为,“发表吧”对此类存在大量剽窃、抄袭的论文已经停止编辑、推荐。同时我们也提醒您,当您向“发表吧”投稿时请您一定要保证论文的原创性、唯一性,这既是对您自己负责,更是对他人的尊敬。
此类投稿的论文如果发表之后,对您今后的人生和事业将造成很大的麻烦,后果不堪设想,请您一定要慎重,三思而后行。
如因版权问题引起争议或任何其他原因,“发表吧”不承担任何法律责任,侵权法律责任概由剽窃、抄袭者本人承担。