android项目结构优化
2016-03-28 14:26
363 查看
对于一个app而言,一般包括UI、网络、业务逻辑、数据库等模块,但是怎样使项目结构更清晰、更模块化,功能移植更快呢?
一般有两种方式:
·1.按照mvc模式设计项目结构
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。
报名命名规则:com.+xxx+.xxx+.功能名称。如:
com.csdn.example.ui;
com.csdn.example.adapter;
com.csdn.example.database;
com.csdn.example.net;
com.csdn.example.util;
com.csdn.example.entity;
com.csdn.example.listener;
...
优点:符合mvc设计理念,将视图、模式、控制器很好的分开来了,更方便查找类
缺点:不利于功能的移植,移植时,需要从各个包中拷贝代码,需要修改的地方多。
2.按照功能模块设计项目结构
报名命名规则:com.+xxx+.xxx+.模块名称。如:
com.csdn.example.ui;
com.csdn.example.ui.login;
com.csdn.example.ui.register;
com.csdn.example.ui.setting;
com.csdn.example.database;
com.csdn.example.net;
com.csdn.example.util;
优点:方便移植,减少每个包之间的耦合
缺点:容易导致类的增加,需要增加部分公共类或接口,以被调用
两种方式都各有优缺点,具体使用哪种项目结构,看公司的需要吧。如有更好的项目结构模式,烦请告知我,可以回复,一起学习,come on !
3.为activity定义新的生命周期
学过设计模式的人,应该对SOLID原则不陌生吧。其中有一条原则就是:单一职责。我们通常在写代码的时候会发现,为啥onCreate()这老兄咋做这么多事情呢?对于一些复杂的界面,逛onCreate()方法中,就有上千行代码,不逛看起来很吓人,后期的代码维护也是够蛋疼的了吧。
所以,我们需要在父类中给它加上三个公共方法,来减少onCreate中的代码量。
这三部分包括:
protected adbstract void initVariables(); //初始化变量,包括Intent带的数据和Activity内的变量
protected adbstract void initViews(); // 初始化布局文件,如果是activity则还包括加载布局文件,fragment中则只需初始化布局文件
protected adbstract void initData(Object obj); //调用网络或者本地数据接口,用以获取数据
这样的话要求每个子类都必须去实现这三个方法,使整个项目代码看起来更清晰。
一般有两种方式:
·1.按照mvc模式设计项目结构
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。
报名命名规则:com.+xxx+.xxx+.功能名称。如:
com.csdn.example.ui;
com.csdn.example.adapter;
com.csdn.example.database;
com.csdn.example.net;
com.csdn.example.util;
com.csdn.example.entity;
com.csdn.example.listener;
...
优点:符合mvc设计理念,将视图、模式、控制器很好的分开来了,更方便查找类
缺点:不利于功能的移植,移植时,需要从各个包中拷贝代码,需要修改的地方多。
2.按照功能模块设计项目结构
报名命名规则:com.+xxx+.xxx+.模块名称。如:
com.csdn.example.ui;
com.csdn.example.ui.login;
com.csdn.example.ui.register;
com.csdn.example.ui.setting;
com.csdn.example.database;
com.csdn.example.net;
com.csdn.example.util;
优点:方便移植,减少每个包之间的耦合
缺点:容易导致类的增加,需要增加部分公共类或接口,以被调用
两种方式都各有优缺点,具体使用哪种项目结构,看公司的需要吧。如有更好的项目结构模式,烦请告知我,可以回复,一起学习,come on !
3.为activity定义新的生命周期
学过设计模式的人,应该对SOLID原则不陌生吧。其中有一条原则就是:单一职责。我们通常在写代码的时候会发现,为啥onCreate()这老兄咋做这么多事情呢?对于一些复杂的界面,逛onCreate()方法中,就有上千行代码,不逛看起来很吓人,后期的代码维护也是够蛋疼的了吧。
所以,我们需要在父类中给它加上三个公共方法,来减少onCreate中的代码量。
这三部分包括:
protected adbstract void initVariables(); //初始化变量,包括Intent带的数据和Activity内的变量
protected adbstract void initViews(); // 初始化布局文件,如果是activity则还包括加载布局文件,fragment中则只需初始化布局文件
protected adbstract void initData(Object obj); //调用网络或者本地数据接口,用以获取数据
这样的话要求每个子类都必须去实现这三个方法,使整个项目代码看起来更清晰。
相关文章推荐
- Android多线程编程方法及开启步骤
- Android Fragment 你应该知道的一切
- PhoneGap2.9.0本地将html打包成Android应用
- Android推送技术研究
- android studio编译异常处理
- android 自带 浏览器的默认标签
- android之html Unicode编码转汉字
- Android 开发环境搭建
- android性能优化视频
- Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储
- android从零单排之home键的屏蔽与复写
- android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明
- Android 一键加速原理
- 强制隐藏android键盘
- Android属性动画完全解析(上),初识属性动画的基本用法
- Architecting Android…The clean way?
- 我的 Android 开发实战经验总结
- android shape的使用
- Android 自定义控件之日历控件
- Android Edittext 自动弹出虚拟键盘的问题