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

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、按业务逻辑的方法组织代码结构

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

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

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

    

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言   第一部分 准备篇   第1章 Android开发简介   1.1 Android基本概念   1.1.1 Android简介   1.1.2 Android的系统构架   1.1.3 Android应用程序框架   1.2 OMS介绍   1.2.1 OPhone介绍   1.2.2 Widget介绍   1.3 小结   第2章 Android开发环境搭建   2.1 Android开发准备工作   2.2 开发包及其工具的安装和   配置   2.2.1 安装JDK和配置Java开发   环境   2.2.2 Eclipse的安装与汉化   2.2.3 SDK和ADT的安装和   配置   2.3 创建第一个Android项目——HeUoAndroid   2.3.1 创建HelloAndroid项目   2.3.2 运行HelloAndroid及模拟器的使用   2.3.3 调试HelloAndroid   2.4 小结   第二部分 基础篇   第3章 Android程序设计基础   3.1 Android程序框架   3.1.1 Android项目目录结构   3.1.2 Android应用解析   3.2 Android的生命周期   3.3 Android程序U设计   3.4 小结   第4章 用户界面开发   4.1 用户界面开发详解   4.1.1 用户界面简介   4.1.2 事件处理   4.2 常用控件应用   4.2.1 文本框(Textiew)   4.2.2 列表(ListView)   4.2.3 提示(T0ast)   4.2.4 编辑框(EditText)   4.2.5 单项选择(RadioGroup、RadioButton   4.2.6 多项选择(CheckBox)   4.2.7 下拉列表(Spinner)   4.2.8 自动提示(AutoComplete.TextⅥew)   4.2.9 日期和时间(DatePicker、TimePicker)   4.2.10 按钮(Button)   4.2.1l 菜单(Menu)   4.2.12 对话框(Dialog)   4.2.13 图片视图(ImageView)   4.2.14 带图标的按钮(ImageButton)   4.2.15 拖动效果(Gallery)   4.2.16 切换图片(hmgeSwilcher)   4.2.17 网格视图(GridView)   4.2.18 卷轴视图(ScrollView)   4.2.19 进度条(ProgressBar)   4.2.20 拖动条(SeekBar)   4.2.21 状态栏提示(Notification、NotificationManager)   4.2.22 对话框中的进度条(ProgressDialog)   4.3 界面布局   4.3.1 垂直线性布局   4.3.2 水平线性布局   4.3.3.相对布局(RelativeLayout)   4.3.4 表单布局(TableLayout)   4.3.5 切换卡(TabWidget)   4,4 小结   第5章 Android游戏开发   5.1 Android游戏开发框架   5.1.1 View类开发框架   5.1.2 SurfaceView类开发框架   5.2 Graphics类开发   5.5.1 Paint和Color类介绍   5.2.2 Canvas类介绍   5.2.3 几何图形绘制   5.2.4 字符串绘制   5.2.5 图像绘制   5.2.6 图像旋转   5.2.7 图像缩放   5.2.8 图像像素操作   5.2.9 Shader类介绍   5.2.10 双缓冲技术   5.2.11 全屏显示   5.2.12 获得屏幕属性   5.3 动画实现   5.3.1 Tween动画   5.3.2 Frame动画   5.3.3 GIF动画播放   5.4 小结   第6章 Android数据存储   6.1 Android数据存储初探   6.2 数据存储之Shared Preferences   6.3 数据存储之Files   6.4 数据存储之Network   6.5 Android数据库编程   6.5.1 SQLite简介   6.5.2 SQLite编程详解   6.5.3 SQLiteOpenHelper应用   6.6 数据共享(ContentProviders)   6.7 小结   第7 章多媒体开发   7.1 多媒体开发详解   7.1.1 Open Core   7.1.2 MediaPlayer   7.1.3 MediaRecorder   7.2 播放音乐   7.3 播放视频   7.4 录制歌曲   7.5 相机设置   7.6 闹钟设置   7.7 铃声设置   7.8 小结   第8章 网络与通信   8.1 网络通信基础   8.1.1 无线网络技术   8.1.2 Android网络基础   8.2 HTTP通信   8.2.1 HttpURLConnection接口   8.2.2 HttpClient接口   8.2.3 实时更新   8.3 Socket通信   8.3.1 Socket基础   8.3.2 Socket应用(简易聊天室)   8.4 网络通信的中文乱码问题   8.5 WebKit应用   8.5.1 WebKjt概述   8.5.2 WebView浏览网页   8.5.3 WebView与Javascript   8.6 WtFi介绍   8.7 蓝牙   8.8 小结   第9章 Android特色开发   9.1 传感器   9.2 语音识别   9.3 GoogleMap   9.3.1 GoogleMap概述   9.3.2 准备工作   9.3.3 GoogleMapAPI的使用   9.3.4 定位系统   9.4 桌面组件   9.4.1 快捷方式   9.4.2 实时文件夹   9.4.3 Widget开发   9.5 账户管理   9.6 小结   第三部分 实例篇   第10章 Android应用开发   实例   10.1 情境模式   10.2 文件管理器   10.3 通讯录   10.4 音乐播放器   10.5 天气预报   10.6 个人地图   10.7 Widget日历   10.8 小结   第11 章Android游戏开发实例   11.1 手机游戏开发简介   11.2 游戏框架设计   11.3 地图设计   11.4 主角设计   11.5 图层管理器   11.6 游戏音效   11.7 游戏存档   11.8 小结   第四部分 高级篇   第12章 AndroidOpenGL开发   基础   12.1 OpenGL简介   12.2 多边形   12.3 颜色   12.4 旋转   12.5 3D 空间   12.6 纹理映射   12.7 光照和事件   12.8 混合   12.9 小结   第13章 AndroidOpenGL综合   应用   13.1 移动图像   13.2.3D 世界   13.3 飘动的旗帜   13.4 显示列表   13.5 雾   13.6 粒子系统   13.7 蒙版   13.8 变形   13.9 小结   第14章 游戏引擎实现   14.1 游戏引擎介绍   14.1.1 什么是引擎   14.1.2 引擎的进化   14.1.3 常见的游戏引擎   14.1.4 Android游戏引擎   14.2 游戏引擎结构   14.2.1 游戏引擎原理   14.2.2 游戏引擎定位   14.2.3 游戏引擎框架   14.3 游戏引擎设计   14.3.1 游戏引擎结构和功能   设计   14.3.2 游戏引擎设计注意事项   14.4 游戏引擎实现   14.4.1 Activity类实现   14.4.2 流程控制和线程   14.4.3 游戏对象与对象管理   14.4.4 图形引擎   14.4.5 物理引擎   14.4.6 事件模块   14.4.7 工具模块   14.4.8 脚本引擎、音效模块、网络   模块   14.5 小结   第15章 优化技术   15.1 优化的基本知识   15.1.1 如何书写出优秀代码   15.1.2 编程规范   15.2 程序性能测试   15.2.1 计算性能测试   15.2.2 内存消耗测试   15.3 初级优化   15.4 高级优化   15.5 Android高效开发   15.6 AndroidUI优化   15.7 其他优化   15.7.1 zipalign   15.7.2 图片优化   15.8 小结   第五部分 扩展篇   第16章 Android NDK开发   16.1 AndroidNDK简介   16.2 安装和配置NDK开发环境   16.2.1 系统和软件需求   16.2.2 NDK开发环境搭建   16.2.3 编译第一个NDK程序   16.3 AndroidNDK开发   16.3.1 JNI接口设计   16.3.2 使用C\C++实现本地   方法   16.3 编译C\C++代码   16.4 AndroidNDK中使用0penGL   16.5小结   第17章 Android脚本环境   17.1 Android脚本环境简介   17.2 Android脚本环境安装   17.3如何编写Android脚本程序   17.4小结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值