基于MVC模式的安卓系统工程结构设计
2016-10-25陈伟
基于MVC模式的安卓系统工程结构设计
随着安卓系统的快速发展,基于安卓系统的软件开发越来越流行。根据Kantar WorldPennel发布的最新数据,IOS系统在中国市场的份额为27.1%,而Android系统的市场份额则高达71.4%。Android系统及应用主要是用在目前智能终端设备上,例如:手机、PAD等,不仅可以实现语音视频的基础通信需求,而且还可以满足现场工业控制的功能要求。本文主要是基于MVC模式来设计安卓系统工程结构。从而降低安卓系统开发人员的开发难度,提高开发效率。
MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。采用MVC模式设计的架构具有低耦合性、代码重用性等特点,能有效地降低软件的开发成本,有利于提高软件的可维护性和工程化管理。MVC模式有诸多优势,将MVC模式应用到安卓系统项目的开发中,必然可以提高安卓项目的开发质量,降低维护难度。
系统结构设计
在安卓系统项目的开发过程中,没有一个明确的代码开发规范和结构,会导致开发的系统模块难以维护,各个模块之间处于高耦合度状态。会给后期的维护和升级带来很大的困难。
在安卓项目的开发中使用MVC思想来设计项目的结构,能使得模块的分工明确,代码可复用性高,模块之间的耦合度降低,有利于代码的修改和移植,整个系统的结构清晰。安卓系统的MVC实现思路如图1所示。
图1 Android工程结构
在上图中将工程结构分为交互层、控制器层、业务层、中间数据池、工具类、文件系统、数据库、通讯模块、服务器端9部分。
交互层:负责客户端的页面展示和人机交互。
控制器层:负责调用业务层方法和将业务层处理结果返回给交互层,是交互层和业务层的桥梁。
业务层:负责处理系统的主要业务逻辑。
工具类:负责向业务层提供支持,包括对客户端数据库的访问以及系统的文件的操作。
中间数据池:用于缓存系统中的临时数据,提供给业务层做临时数据支持。
通讯模块:Android系统的通讯主要分为两种类型,一种是自定义通讯协议,通过Socket模式来达到与服务器交互。另一种是调用WebService接口来与服务器交互。通讯模块负责系统的数据传输与通讯,对整个android应用提供支持。
服务器端:为Android客户端提供业务支持,是整个系统的核心部分。
整体安卓系统设计结构的实现思路为:用户通过Activtiy所展示的页面与系统做交互,Activity根据用户所选择的操作去告诉控制器调用业务层的哪个方法,根据控制器调用业务层返回的结果刷新Activity。控制器在整个程序中负责响应Activity的事件请求并调用业务层的方法,在业务层调用结束后通知Activity刷新或是跳转。如果调用业务层有异常情况,控制器负责将错误信息返回给Activity通知用户。业务层负责处理整个客户端的业务逻辑处理。业务层的主要工作还是将客户端从服务器获取的数据进行转换或处理。工具类负责对业务层的工具支持。比如说文件的访问、复制、修改、客户端数据库的连接、增删改查、客户端数据加密等。中间数据池存储一些在软件运行过程中的临时数据或是业务层在处理业务时常需要的数据。中间数据池是以Java中Map的对象存储数据,即键值对。中间数据池的好处是其中的数据随时都可以被访问,没有访问范围,可以避免不同Activity之间跳转携带数据的繁琐操作。缺点是数据的Key使用需要有规范的写法,否则有可能导致数据池内数据混乱,造成程序的业务处理错误。还有就是当客户端程序出现无法恢复的错误时,数据池会随之销毁,用户需要重新打开程序。通讯模块是客户端与服务器沟通的桥梁,通讯模块负责将客户端的数据传输到服务器和接收服务器的响应和数据。是客户端与服务器的沟通桥梁。
在Android开发过程中,采用这种系统结构符合MVC的设计思想,整个系统不混乱臃肿,各个模块都有其单独的功能。工程维护、调试和扩展起来也比较容易。其中工具类、数据池在其他工程中也可以进行重用。
图2 Android工程结构图
图3 登录序列图
实例解析
下面以模拟系统登录业务为例,结合上述Android工程的MVC设计思想进行实例解析。工程结构如图2所示。
在项目结构中,communication包为通讯模块,根据系统的服务器支持不同,可以选择Socket通讯模式或WebService调用。Service包为系统的业务实现类。Support包下包括中间数据池和控制器。Utils包为工具类。View包下放所有页面的类。
根据登录的业务需求结合项目的结构?设计登录的序列图如图3所示。
当用户在登录Activity输入登录信息点击确定后,LoginActivity先将登录信息放入数据池,然后通知控制器调用业务层的登录方法。业务层在接收到控制器的调用后从数据池中取出登录信息并做处理,然后通知通讯模块去调用服务器的登录方法。通讯模块负责调用服务器的登录方法并将服务器返回的数据传回给业务层,业务层再将数据放回到中间数据池。这时控制器从返回的数据判断登录方法执行的状态是成功还是出现异常。如果出现异常则给用户进行提示,如果正常跳转到应用首页,完成整个登录操作。
结语
在本文中叙述了安卓项目的MVC设计思想,以登录为实例分析了如何将MVC设计思想应用到实际的开发过程中。在安卓系统的开发结构中应用这种MVC设计模式,可以使开发人员的开发思路清晰,也使得系统各个模块之间分工明确。应用基于MVC开发模式的系统结构可以极大地降低安卓应用软件后期维护难度,具有高可扩展性。从而延长了软件的生命周期。
10.3969/j.issn.1001- 8972.2016.19.019