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.定义好基类,保证代码统一性,可读性,减少冗余逻辑。







0 0