您的位置:首页 > 移动开发 > Android开发

(一)Android应用开发代码组织方式

2014-03-27 21:49 363 查看
1、按照代码的功能类型划分程序的模块

a)
在编写Android应用程序的时候,我们首先肯定要把应用程序的界面给创建出来。那这个界面我们一般的写法是我需要创建一个Activity,这个Activity把一个布局给设置进来,那么这上面我们有一个包叫Activity包,这个包主要是用来去做与UI相关的操作的。

b)
那么在创建一个Activity的时候我们要设置它布局,设置它的界面,如果是一个一般的布局,一个图片,一个文本,那么直接放一个TextView,放一个ImageView就可以满足我们的需求了,但有时候我们界面UI可能会非常复杂,那么系统给我们提供的布局,系统给我们提供的控件可能不能满足我们的需求了,所以呢,有的时候我们需要去自定义一些控件,创建一些自定义UI出来。一般我们都有一个stub包放我们自定义的组件。

c)
接下来,如果我们要把数据展现到界面上,那我们一般情况下都是要把数据先获取出来,准备好。比如我想把手机可用内存显示到界面上。那我首先通过API把这个可用内存信息给获取出来,那么这个获取数据的操作在我们学Java Web的时候一般要有一个业务方法或者服务类去获取这个数据。在Android我们也有一些业务方法获取数据,那由于Android里面有一个组件,这个组件叫service,如果把包名取成service包会产生一些歧义,所以我们一般可以把它都取名叫engine包,叫数据引擎,它是用来获取数据的,里面放一些业务方法。

d)
这些数据获取出来之后呢,我们就可以把数据传给上层UI,展现在界面上。但如果有时候这个数据可能比较复杂,比如这个数据非常多,可以以列表的形式展现出来,我们一般用的组件是ListView,但这个LIstview它展现的话,它是首先要把数据给放到一个数据适配器里面,这个UI拿到适配器以后才可以把数据展现出来。所以呢,有一些特殊的业务对象或场景,如果数据比较复杂,我们需要有一个单独的适配器(Adapter),它是用来完成数据的转换的,我们存放到Adpter里面再传给上层UI。

e)
那么这个获取数据的引擎获取数据的来源是比较多的,我们可以从本地的服务去获取数据,也可能从网络去获取数据,也可能通过动态的计算去获得数据,都塞给这个业务方法,对于不同的获取方法,我们可能会有不同的业务包做相应的支持。那么数据获取出来后,可能有一些数据在短时间不会发生改变的,我们一般可以把它缓存到内存里,这个地方有一个叫数据缓存的包。

f)
这个缓存,如果你把它缓存到内存里,一般都是放到一个什么map集合或者List集合里,有的时候我们希望这个数据能够持久化的保存。我们一般有一个这样的包,叫db包,数据库相关的或这个是文件相关的。我们在得到一些一般不会改变的数据的时候,我们一般把它存到db包里或者file包里。

g)
另外我们在开发代码的时候我们一般都会用到一些工具类或这个工具方法,比如字符串处理,文本格式化,我们一般会创建出来一个util包,这个里面会提供一些数据还有方法的支持,用来去获取本地服务,网络,或者动态计算的数据。大体上我们这个包结构我们就按照这个代码的功能进行划分。这是一种常用的划分程序模块的一种方式。



2、按业务逻辑的方法组织代码结构

另外,市面还有一些非主流的代码组织方式。

有一些程序,它代码和代码的耦合度非常松散,特别是一些自动化办公的这种软件,它这个模块可能会非常的松散。比如说,开发一款自动化办公的软件,它可以有员工的签到,自动打卡,员工的出差的安排,会议记录,发工资信息的模块,这几个模块之间的关系基本上是没有的,这几个模块耦合度是非常松散的。如果你不想要哪个模块直接把哪个模块的包移除掉就可以了。

如果遇到这种程序,你可以通过以下这种方式来组织你的包名。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: