首页 > 范文大全 > 正文

设计模式在移动智能系统中的应用研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇设计模式在移动智能系统中的应用研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:设计模式分为创建型模式、构型模式和行为型模式。抽象工厂设计模式是其中的一种,它向客户端提供接口,使得客户端在不必指定具体类型的情况下,创建多个对象。本文结合实例重点阐述这种模式在移动智能系统中的应用研究

关键词:设计模式;抽象工厂设计模式; 移动智能系统

中图分类号:02 文献标识码:A

设计可重用的面向对象的软件是比较困难的。没有经验的开发人员常常在选择中犹豫不决,导致他们采用了非对象技术。设计模式的出现使得重用成功的设计和架构更为容易。设计模式能够帮助设计人员选择那些可重用的设计。通过对类、对象交互及其深层次意图的详细说明,设计模式甚至能提高现有系统的可维护性和文档质量。简言之,设计模式能帮助更快的作出正确的设计,它同样可以在移动智能系统中加以应用。

1 设计模式

1.1 简介

1995年,由著名的“四人组”GOF(Gang of Four)合著的《设计模式——可复用面向对象软件的基础》列举了软件开发中的23种经典设计模式。时至今日,对整个软件开发行业影响深远。在软件开发中,经过无数开发人员验证、而且可以解决在特定环境下、重复出现、特定问题的解决方案就是设计模式。使用设计模式是为了可重用代码,而且模式是经过验证的代码模版,可以达到代码更容易让人理解、也保证了代码的高可靠性。

设计模式是软件行业中革命性的成果,是无数开发前辈智慧的结晶,这些模式不仅是经验的积累也是简洁高效的解决方案,它覆盖了软件开发中具有典型的、有代表性的问题,而且这些模式同样可以应用于移动智能系统的开发。

1.2 分类

设计模式根据模式的目的可分为3大类:(1)创建型模式(2)结构性模式(3)行为性模式

每一大类又有若干子类,下面结合实例重点阐述--抽象工厂模式(Abstract Factory)在移动应用系统中的应用与改进。

2抽象工厂模式(Abstract Factory)

2.1 基本概念

每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。它包括两个重要的概念:产品族和产品等级。

产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和ADM芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如图1:

从上图可以看出,抽象工厂模式的每个工厂创造出来的都是一族产品,而不是一个或者一组。组是可以随意组合的! 抽象工厂模式是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体类。

2.2 UML结构图

我们先看一下抽象工厂模式的UML结构图:(图2)

其中主要的描述包括:

AbstractProduct: 抽象产品,它们都有可能有两种不同的实现。

ConcreteProduct:包括ProductA和ProductB,对两个抽象产品的具体分类的实现。

AbstractFactory: 抽象工厂接口,它里面应该包含所有的产品创建的抽象方法。

ConcreteFactory: 包括ConcreteFactoryA和ConcreteFactoryB,具体的工厂,创建具有特定实现的产品对象。

2.3 抽象工厂模式在移动智能系统中的实现

本文以基于Android平台使用三层结构开发的一个移动智能应用系统,在数据访问层使用抽象工厂设计模式为例,深入研究对数据访问、业务逻辑、用户接口进行分离的技术。

2.3.1 系统需求

这个系统是一款集日程管理、定位追踪、防盗于一体的手机软件。其中的日程管理功能需求是对添加的日程要存储在数据库中;退出程序后再重新打开,日程数据要从数据库中读取,然后把数据填充到ListView中。日程提醒功能可以启动一个Activity,弹出对话框并提示当前日程的内容信息。具体实现如图3、4

2.3.2 系统架构设计

系统的层次结构图如图6

图5系统的层次结构图

结构图的最顶层是表现层,它直接跟用户打交道,而不直接与数据库进行交互。在这里,我们使用了抽象工厂模式,把创建数据库访问层实例的过程与业务层进行了分离,业务层只能通过抽象接口的实现对象进行数据的操作,使得业务层只认识数据访问的抽象接口。而该接口的实现类对象由工厂对象来生成,这样,层与层之间不依赖于具体的数据类型,实现了层与层之间的解耦[6]。

2.3.3 系统架构实现

下面我们遵循"抽象工厂模式"的设计思想,实现这个移动智能应用系统。

2.3.3.1 数据库访问层DAL

(1)抽象数据库访问层IDAL的接口模板。该模板声明了最基本的数据库增、删、改、查功能,主要代码如下:

(2)抽象工厂接口编写。这里只需要用到

一个数据访问提供程序createScheduleProvider:

(3) 、DAL层的实现

首先定义基本提供程序SQLiteBaseProvider把数据访问提供程序共有的部分抽象出来,然后添加一个类ScheduleProvider,它继承SQLiteBaseProvider并实现IDALSchedule,以实现数据访问中的增、删、改、查操作。主要代码如下:

(4)、具体工厂的实现

当封装好了对数据库进行访问的操作后,通过具体工厂提供ScheduleProvider的实例,实现面向接口的编程,也就实现了业务层和数据层之间的解耦。主要代码如下:

2.3.3.2 业务逻辑层BLL

业务逻辑层的设计是通过具体工厂获得数据访问提供程序的实例,并赋值给iDALSchedule接口,从而使得对数据的操作都通过这个抽象接口来进行,例如:iDALSchedule.selectAll()。

主要代码如下:

2.3.3.3 表现层UI

Schedule类实现了OnItemClickListener接口,并实现了对ListView的Item单击事件的监听。主要代码如下:

结语

综上所述,抽象工厂设计模式在移动智能系统开发中具有以下的优点:第一,易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易。第二,它让具体的创建实例与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户端代码中。抽象工厂模式只是我们认识设计模式的一个开始,我们可以通过更深层次的研究,进一步设计出更多的设计模式,进而更好的适应软件设计需求与发展。

参考文献

[1] Alan Shaioway,James R.Trotr.设计模式解析[M];北京:人民邮电出版社,2006.

[2](美)弗里曼(Freeman,E. )等.Oreily Taiwan公司译head first设计模式[M];

北京:中国电力出版社,2007-9-1.

[3] 刘振安,董兰芳,刘燕君.面向对象技术与UML[M].北京:机械工业出版社,2007.

[4] 李宁,Android开发权威指南[M],北京:人民邮电出版社,2011-09-01

[5] (美)罗杰,Android应用开发(李耀亮译)[M],北京:人民邮电出版社,2010-09-01

[6] Yong-Hua Cheng,Wen-Kuang Kuo,Szu-Lin Su, An Android system design and implementation for Telematics services ,Intelligent Computing and Intelligent Systems (ICIS),2010: 206210