您的位置:首页 > 移动开发

app重构之架构

2015-12-04 14:54 253 查看

历史

我们的app经历了一次重构,在重构过程中将IDE切换到Android Studio,并且编译脚本从Ant切换到了Gradle。

不介绍IDE和Gradle的优势,主要介绍重构后app的Architecture相关部分。

从0到1是一个开始,再从1到N又是另一个开始。

Architecture

当前我们的结构主要为4层:

app

core

lib

model



app依赖core,而core依赖lib和model。随着以后的业务发展、产品迭代或者有更好的结构划分,会再做调整。



app——展现层(presention)

用于页面展现,主要包含MVP模式中的VP。我们对V采用接口的方式去定义,然后让Activity或者Fragment去实现V接口,这样我们就达到接口编程的目的,P只需要关注V接口即可。以注册中的地区列表页面为例



V

/**
* 地区view,MVP-V
*/
public interface IRegionView {
/**
* 搜索更新
*/
void search2Update();
}


P

/**
* 国家地区,MVP-P
*/
public class RegionPresenter {
private List<Region> mRegions = OFRRegionHelper.getRegions();

/**
* 获取地区列表
*
* @return
*/
public List<Region> getRegions() {
return mRegions;
}

/**
* 搜索
*
* @param regionView
* @param searchRegion
*/
public void search(@NonNull IRegionView regionView, String searchRegion) {
mRegions.clear();
if (TextUtils.isEmpty(searchRegion)) {
mRegions.addAll(OFRRegionHelper.getRegions());
} else {
mRegions.addAll(OFRRegionHelper.searchRegions(searchRegion));
}
regionView.search2Update();
}
}


另外,我们的app有太多的业务逻辑,所以我们也使用了比较多的策略模式,方便以后的扩展和维护。比如不同的国家,它在意向单展现时就有不同的表现:

可以同时选择的最多意向单数量

每个学校可以同时选择的最多专业数量

意向单名字

于是,我们就对此采用了策略模式



国家意向单策略接口

/**
* 国家策略
* <ul>
* <li>不同国家可选的意向单数量不同,具体见{@link #maxCount2Select()}</li>
* <li>不同国家的学校专业可选数量不同,具体见{@link #maxCountOfPerSchool2Select()}</li>
* </ul>
*/
public interface ICountryPurpose {
/**
* 国家可以同时选择的最多意向单数量
*
* @return
*/
int maxCount2Select();

/**
* 每个学校可以同时选择的最多专业数量
*
* @return
*/
int maxCountOfPerSchool2Select();

/**
* 意向单名字,目前可用名字为:
* <ol>
* <li>专业</li>
* <li>入学时间,当前只限日本</>
* </ol>
*
* @param ctx
* @return
*/
String getName(@NonNull Context ctx);
}


core

核心层,主要用于应用相关的URL拼接、图片加载、网络请求、json解析、第三方平台、配置和工具。

lib

通用库层,不依赖于应用的任何业务,方便快速的移植到其它项目.

model

数据层,作为MVP的M,用于应用的数据模型.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: