android开发—项目结构设计
来源:互联网 发布:以房养老不可行数据 编辑:程序博客网 时间:2024/05/22 00:31
我作为一名Android开发者也有好几年的经历了,从打杂开始到带领几个人的小团队开发,写过的项目也有很多了,从小到几十个页面的到几百个页面的,也算是积累了一些移动开发的经验了。我在这些年的工作当中发现很多开发者都喜欢把所有的代码,类放在一个项目下,甚至还有人把Adapter放在Activity中,这些做法显然是不好的首先是看起来很不方便,结构很乱,不利于优化和修改,时间长了项目大了之后,迭代简直就是噩梦。那么规划好项目是做好项目的前提。那么应该如何去规划呢。
首先:
建立自己的类库。这个我们可以当做module也可以打成jar包 如截图:
1.activity 包中存放的是Activity基类,当然基类也要分层,我们在Lib包中封装的是BaseActivity是与业务逻辑无关的公共逻辑。
2.cache包里做的是缓存数据和图片相关的处理。
3.view包里放的是自定义view。
4.utils里放的是各种与业务无关的公共方法。
5.Internet 里放的是网络请求的封装。
第二:
将主项目进行划分 如截图:
1.activity 可以按照模块进行拆分,将不同模块的Activity拆分到不同的包下。
2.adapter 所有的适配器都放在这里,当然也可以将adapter进行拆分,这个看个人喜好和项目的实际情况。
3.db这里是数据库的相关的类
4.engine 业务逻辑相关的类可以放到这里
5.entity 这个是模型类,当然也有人喜欢使用Map.
6.view 这里是自定义控件。
7.utils 将所有的公有方法都放这里
8.interfaces 接口包。
第三:
基类同样在APP设计中起到很重要的作用。
那么为什么要设计基类呢?
我认为有2个原因,一是方便代码编写,减少重复代码和冗余逻辑,优化代码;二是优化程序架构,降低耦合度,方便拓展、修改。
那么基类的设计的思路是什么呢?
1.重复的代码,子类使用频率很高。
2.常用方法。
3.初始化,加载网络数据等代码。
4.为子类创建标准流程模板
5.公共属性
我们可以在core.activity中定义一个BaseActivity让他继承Activity,这块还是上代码吧。
public abstract class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//这个是定制流程 initVarisbles(); initView(savedInstanceState); reqData();
// 常用方法 public void ShowToast(String text) { if (!TextUtils.isEmpty(text)) { if (mToast == null) { mToast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT); } else { mToast.setText(text); } mToast.show(); }} protected abstract void initVarisbles();//初始化变量 protected abstract void initView(Bundle savedInstanceState);//初始化view protected abstract void reqData();//加载数据
}
这里定义了几个抽象方法,方便子类去实现做自己想做的事情,这样做好处是将onCreate()方法细化可以保证可读性更高,代码统一性更强,降低耦合度。当然我们还要根据项目的业务逻辑,头部,loading,等等在主项目中去定义项目的基类做更多工作,由于项目不同,要有不同的设计这里就不举例。
那么我们简单地总结一下吧
1.建立一个与业务逻辑无关的类库,主项目依赖类库。
2.在主项目中把activity划分模块,方便多人开发。
3.定义好基类,保证代码统一性,可读性,减少冗余逻辑。
- android开发—项目结构设计
- android项目结构设计参考
- ios开发项目目录结构设计
- 项目开发中,结构设计的常用工具类
- 项目结构设计;
- SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(四)——总体结构设计(服务器端)
- SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(五)——总体结构设计(客户端)
- nodejs 项目目录结构设计
- 云风—开发笔记 2 :redis 数据库结构设计
- 前端项目结构设计精细方案
- Oracle数据库开发结构设计技巧
- 结构设计
- 结构设计
- 说说我的iOS项目结构设计
- 黑马商城项目_商品展示结构设计
- 我的第一个python web开发框架(4)——数据库结构设计与创建
- FLASH组件开发结构设计及架构
- QuickCSharp框架开发(1)-系统表结构设计
- git使用笔记
- 股市经典头部形态研究(三)
- Android自定义View——弧线展示图
- bean的加载(三)缓存中获取单例bean
- OSI七层协议和TCP/IP四层协议之比较
- android开发—项目结构设计
- 如何成为一个Xamarin专家
- Bootstrap之表格checkbox复选框全选(http://blog.csdn.net/shangmingchao)
- 运行docker容器
- Ajax调用Webservice返回JSON数据
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- typedef几种常见用法
- AndroidStudio如何打包生成realease版本的arr包,并上传到Nexus搭建的maven仓库,供项目远程依赖(一)
- WinSCP(版本5.7.6)中文文件名显示乱码