Android系统环境下软件设计模式的研究

时间:2022-10-07 04:24:34

Android系统环境下软件设计模式的研究

摘 要: 针对以往设计模式的特点,在面向对象基础上对现有的设计模式进行分析,制定出一套能够应用于Android系统环境下的自定义设计模式,并且用自己设计的一款单词软件来验证其效率,实现了代码复用性高,程序设计简洁的目的。结果表明,应用合适的设计模式可以使得Android系统下的软件设计过程变得更为简便,功能更为强大。

关键词: 设计模式; 面向对象方法; Android; 单词软件

中图分类号: TN919?34 文献标识码: A 文章编号: 1004?373X(2013)20?0051?03

0 引 言

设计模式是解决软件设计知识和设计方案复用的技术手段,它是在一定条件下对如何组合类之间的关系进行描述的一种解决方案。其诞生的意义在于将复杂的程序设计过程变得简单清晰,提高代码复用,并制定出相应的规范标准供后来人使用。自从E.Gamma 等人提出了设计模式的概念[1],设计模式作为解决设计问题一种标准型规范,得到了广大开软件研究开发人员的重视和关注,并且在广阔的领域得到了发展和应用[2]。随着时间推移,新的设计模式的提出也越来越多,例如F.Bushmann、M.Kircher 等都在之前的基础上提出了各自的设计模式,并且被相应的推广和应用[3]。设计模式的应用也被越来越多的人开发和研究。

Android是基于Linux内核的开源性嵌入式系统,主要应用于手机或者平板电脑等移动设备。是由Google在2005年收购并注资,随后组织开放联盟对性能进行改良,采用多任务处理,进而扩展到各个移动终端的使用上,该平台由操作系统、中间件、用户界面和应用软件组成,Android平台存在多种类型的应用程序[4?5]。而对于开发者而言,设计出有观赏性且实用的软件则是其基本要求。在这其中涉及到很多的制约因素,比如手机本身硬件的强大与否,屏幕尺寸所带来的观感,以及软件在运行过程中所占用的RAM空间等。这就需要开发者在现有条件基础上开发时时刻考虑其软件设计模式的高效性,以最简洁的方式来实现强大的功能,巧妙的设计软件结构,来完成设计的需要。

1 设计模式概述

设计模式根据目的来分类,可分为3类:创建型、结构型和行为型。创建型模式是针对对象的创建过程,结构型模式对应对象或者类之间的关系,行为型模式则根据类或者对象之间的关系进行不同的协作和分工。设计模式为开发者提供了可以借鉴的经验,上述模式都是已经成型并且应用于软件设计的经典解决方案,可以很好的提高代码复用性,提高开发者的工作效率[6]。

1.1 创建型

软件的设计就是开发者用类和对象组建一个系统的过程,这个系统是面向对象的。开始设计软件之前,开发者会需要处理很多的开发组件,例如下拉列表、单选按钮、多选按钮、菜单等。第一步是将这些抽象概念具体化,也就是是实例化对象,才能进行下一步的工作,创建型模式的具体工作可以说就是对象化。一般的创建型模式以下面的几个为代表:抽象工厂模式(Abstract Factory)、工厂方法模式(Factory Method) 、生成器模式(Builder)、单件模式(Singleton) 、原型模式(Prototype)等[7?8]。

1.2 结构型

组件间的组合是在其设定完成后需要做的事情。结构型模式就是将实例化的类或者对象组合拼接在一起,会利用继承机制来完成。这一模式通常会应用于多个单独类库的组合。结构型模式可以做如下分类:适配器模式(Adapter)、装饰模式(Decorator)、组成模式(Composite)、外观模式(Fa?ade)、享员模式(Flyweight)、桥接模式(Bridge)、模式(Proxy) 等[7?8]。

1.3 行为型

在完成了实例化以及组合的具体行为之后,就需要对对象进行操作了。行为型模式的主要任务是通过算法对对象之间进行不同的调配,同样在类中间使用继承的方式。常见的行为模式有: 策略模式(Strategy)、职责链模式(Chain of Responsibility)、解释器模式(Interpreter)、命令模式(Command) 、迭代模式(Iterator)、观察者模式(Observer)、访问者(Visitor)等,以及相对更为复杂的(如视图/模型/控制器模式)等[7?8]。

2 Android系统概述

2.1 Android系统架构

Android系统是基于Linux去实现的,架构采用的是分层结构,一共分为4个层,从高层到低层分别是Application,Application Framework,Libraries和Linux Kernel[9]。

Android在的时候自带了许多系统应用,这些应用包括某些客户端,SMS短信,浏览器,日历,地图,通讯录等。这些自带的应用程序都是用Java编写的,几乎所有Android系统的手机都包括这些基本的应用程序。因为系统本身是基于Linux内核,所有系统自带软件的卸载都需要root权限,类似于Linux的root用户命令。

图1可以看到,最上层是应用程序层,用Java语言操作,下一层则是应用框架层,包含各大系统组件,应用程序框架是Android开发的基础,提供各种API供开发者使用[10]。再下层是本地接口层 ,包含核心类库。最底层是修改过的Linux 系统,提供了与设备硬件交互的相关接口。

开发者只需要在最上层用Java语言设计自己的软件,调用相应接口就可以实现自己想要的功能。

2.2 Android安全机制

Android操作系统的权限都是分立的。由于权限不统一管理,每个应用都以惟一的能够被系统识别的ID来运行,系统的各部分也都有其独立的识别方式。Linux的特点就是将应用之间、应用与系统之间隔离开[11]。在应用开发时,开发者如果需要操作某些功能或者获取系统服务,比如要获取网络下载权限或者读写SD卡中的文件,则需要在manifest.xml中填写相应的权限代码。

3 设计模式在Android系统下的应用

3.1 Android自定义设计模式

模式的选择建立在需求和设计均需形式化描述的基础上,而目前现有的固定成型的设计模式对于Android开发有一定的局限性,受框架的影响,很多原先的模式并不能很好的运用于Android上,所以就需要开发者灵活掌握设计思路,进而开发出属于自己的设计模式以便于将来使用,并且减少工作量,提高代码的复用性以及软件的灵活性[12]。模式的开发和运用对于每个开发者而言都是必不可少的事情,下面笔者将以一款单词软件来说明设计模式对于软件设计的重要作用。

3.2 两种设计模式对比

(1)静态模式

静态模式如图2所示。

(2)动态模式

动态模式如图3所示。

(3)对比结果

可以很清楚的看到,前一种设计模式是一种树状的结构,设计思路很直观,不过却是一个大量的工程,因为在Android里面每一个UI都对应一个类,这样一来可能需要上百个类才能实现其功能。而第二种模式采用的是类对应条目、内容根据之前的限定条件来填充的思路,一个框架对应一个类,所有数据都从SQLite中实时读取,根据之前Intent传递过来的限定条件筛选内容进而显示出不同的内容,只需4个UI类便可以实现原先需要上百个类实现的功能,思路变得简单清晰。

3.3 程序运行结果

此软件依据动态设计模式完成后可以很好的在虚拟机和真机上运行,效果如图4所示。

4 结 语

本文通过对以往设计模式的研究,在分析以往模式的基础上总结出自己的设计模式,并将其应用于Android系统下的实际开发之中。通过实例验证表明,不同的设计模式带来的工作量以及程序的简洁程度都有很大区别,模式的优化程度决定了程序设计的高效性,模式的开发也将是可以被反复验证,不断完善的。随着时间的推移,相信将来会有更多的适合不同领域的设计模式诞生,使程序的开发更为的简洁和高效。

参考文献

[1] GANNA E, HELM R, JOHNSON R, et al. Oesign pattems: elements of reusable object?oriented software [M]. Massachusetts: Addison Wesley Publishing Company Inc, 1995.

[2] BUSCHMANN Frank, MEUNIER Regine, ROHNERT Hans, et al. Pattern?oriented software architecture?a system of patterns [M]. Hoboken, USA: John Wiley & Sons, 1996.

[3] KIRCHER Michael, JAIN Prashant. Pattern?oriented software architecture: patterns for resource management, volume 3 [M]. Hoboken, USA: John Wiley & Sons, 2004.

[4] 汪永松.Android平台开发之旅[M].北京:机械工业出版社, 2010.

[5] 李兴华.Android开发实战经典[M].北京:清华大学出版社, 2012.

[6] 饶一梅,王治宝,王秀峰.软件设计模式及其在Java类库中的典型实现[J].计算机工程与应用,2002,38(4):70?72.

[7] 王力生,郑飞.设计模式在中国移动巡检平台中的应用[J].计算机应用,2006(6):3?5.

[8] 邓玉龙.MVC设计模式在电子商务系统中的研究与应用[J].南京邮电学院学报,2002,22(2):90?92.

[9] 柯元旦.Android内核剖析[M].北京:电子工业出版社,2011.

[10] 曾健平,邵艳洁.Android 系统架构及应用程序开发研究[J].微计算机信息,2011,27(9):23?25.

[11] 鲍可进,彭钊.一种扩展的Android 应用权限管理模型[J].计算机工程,2012,38(18):17?19.

[12] 刘海岩,锁志海.设计模式及其在软件设计中的应用研究[J].西安交通大学学报,2005,35(10):32?35.

[13] 弋改珍,解争龙,张琨.基于Android的火车时刻表查询系统设计与实现[J].现代电子技术,2012,35(19):41?44.

[14] 张正政,林耀荣.基于Android系统的影音播放器开发[J].现代电子技术,2011,34(2):5?8.

[15] 沈文瑞,曾连荪,杨臻.基于Android平台的校园导览软件设计[J].电子设计工程,2012(9):26?28.

上一篇:拒绝罢工:高效进行工作 下一篇:基于选择空间的AES密钥扩展算法