android底层重构,【理论】【转】Android项目重构之路:实现篇

前两篇文章Android项目重构之路:架构篇和Android项目重构之路:界面篇已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码。

IDE采用Android Studio,Demo实现的功能为用户注册、登录和展示一个券列表,数据采用我们现有项目的测试数据,接口也是我们项目中的测试接口。

项目搭建

根据架构篇所讲的,将项目分为了四个层级:模型层、接口层、核心层、界面层。四个层级之间的关系如下图所示:

574cba1c9dd366cfa937aa1255bf5093.png

实现上,在Android Studio分为了相应的四个模块(Module):model、api、core、app。

model为模型层,api为接口层,core为核心层,app为界面层。

model、api、core这三个模块的类型为library,app模块的类型为application。

四个模块之间的依赖设置为:model没有任何依赖,接口层依赖了模型层,核心层依赖了模型层和接口层,界面层依赖了核心层和模型层。

项目搭建的步骤如下:

创建新项目,项目名称为KAndroid,包名为com.keegan.kandroid。默认已创建了app模块,查看下app模块下的build.gradle,会看到第一行为:apply plugin: 'com.android.application'

这行表明了app模块是application类型的。

分别新建模块model、api、core,Module Type都选为Android Library,在Add an activity to module页面选择Add No Activity,这三个模块做为库使用,并不需要界面。创建完之后,查看相应模块的build.gradle,会看到第一行为:apply plugin: 'com.android.library'

建立模块之间的依赖关系。有两种方法可以设置:

第一种:通过右键模块,然后Open Module Settings,选择模块的Dependencies,点击左下方的加号,选择Module dependency,最后选择要依赖的模块,下图为api模块添加了model依赖;

14786b39dda5699f1856af6f1edbdd28.png

第二种:直接在模块的build.gradle设置。打开build.gradle,在最后的dependencies一项里面添加新的一行:compile project(':ModuleName'),比如app模块添加对model模块和core模块依赖之后的dependencies如下:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.0.0'

compile project(':model')

compile project(':core')}

通过上面两种方式的任意一种,创建了模块之间的依赖关系之后,每个模块的build.gradle的dependencies项的结果将会如下:

model:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.0.0'}

api:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.0.0'

compile project(':model')}

core:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.0.0'

compile project(':model')

compile project(':api')}

app:dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:22.0.0'

compile project(':model')

compile project(':core')}

创建业务对象模型

业务对象模型统一存放于model模块,是对业务数据的封装,大部分都是从接口传过来的对象,因此,其属性也与接口传回的对象属性相一致。在这个Demo里,只有一个业务对象模型,封装了券的基本信息,以下是该实体类的代码:

/** * 券的业务模型类,封装了券的基本信息。 * 券分为了三种类型:现金券、抵扣券、折扣券。 * 现金券是拥有固定面值的券,有固定的售价; * 抵扣券是满足一定金额后可以抵扣的券,比如满100减10元; * 折扣券是可以打折的券。 * * @version 1.0 创建时间:15/6/21 */public class CouponBO implements Serializable {

private static final long serialVersionUID = -8022957276104379230L;

private int id;                // 券id

private String name;           // 券名称

private String introduce;      // 券简介

private int modelType;         // 券类型,1为现金券,2为抵扣券,3为折扣券

private double faceValue;      // 现金券的面值

private double estimateAmount; // 现金券的售价

private double debitAmount;    // 抵扣券的抵扣金额

private double discount;       // 折扣券的折扣率(0-100)

private double miniAmount;     // 抵扣券和折扣券的最小使用金额

// TODO 所有属性的getter和setter}

【文章太长,请参看原文:http://keeganlee.me/post/android/20150629】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值