[Android]如何做一个崩溃率少于千分之三噶应用app(29)- 重构调用解耦

2018-01-12 11:17:57来源:https://www.jianshu.com/p/3aaca1d8e150作者:CangWang人点击

分享

大家好,我系苍王。


以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。


[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表


很多项目都是更新迭代中,才逐渐使用组件化的架构。
可以思考一下以下一些情景。
1.使用GreenDao等orm类型数据库,如果你只是使用在登录功能当中,并没涉及到其他信息存储,就因为需要获得用户对象,你是否一定要将整个对象类型下移到base module呢?


2.网络请求的时候,使用Retrofit等需要注解的框架,如果某个模块也用到这个请求,是否需要整个请求返回对象和请求封装的interface也下移呢?


想清楚以上的问题,如何能在不更改原有代码的基础上,能够正常调用同一层级的其他业务module代码呢?这就是本章介绍的内容了。


这里可以分为两种情况,一种是只涉及逻辑,不涉及界面。第二种是涉及到界面的。


首先介绍第一种做法


架构如下图


抽象类解耦设计

1.定义一个空的MBaseApi抽象类


public abstract class MBaseApi {}

2.定义一个注册类


public class ModuleApiManager {
static ModuleApiManager instance = new ModuleApiManager();
HashMap<Class<?extends MBaseApi>,MBaseApi> aMap;
public static ModuleApiManager getInstance(){
return instance;
}
private ModuleApiManager(){
aMap = new HashMap<>();
}
public boolean containsApi(Class<?extends MBaseApi> clazz){
return aMap.containsKey(clazz);
}
public <T extends MBaseApi> T getApi(Class<T> clazz){
return (T) aMap.get(clazz);
}
public void putApi(Class<?extends MBaseApi> key,MBaseApi value){
aMap.put(key, value);
}
public void removeApi(Class<?extends MBaseApi> key){
aMap.remove(key);
}
}

3.建立模块的抽象Api class放到BaseModule当中


public abstract class PageNameApi extends MBaseApi{
public abstract String loadPageName();
}

4.建立模块Ap实现类,这里PageNameCore是逻辑类,可以是静态或者是单例。


public class PageNameImpl extends PageNameApi{
@Override
public String loadPageName() {
return PageNameCore.getInstance().getName();
}
}

5.在模块启动的时候调用


ModuleApiManager.getInstance().putApi(PageNameApi.class,new PageNameImpl());

倘若你定义的Impl实现类是个单例,填入单例也可以。


6.模块调用的时候


String pageName = ModuleApiManager.getInstance().getApi(PageNameApi.class).loadPageName();

这样做基本不会让原有的逻辑更改。


如果想使用更新页面逻辑,可以参考第7节的跨module交互的方式。


这里通过接口的方式来,改造将BaseApi和抽象类Api改为接口,然后通过注册实现调用。





接口解耦设计

业务模块中的页面逻辑View、Activity、Fragment、Presenter继承接口Api,然后通过ModuleApiManager注册,就可以使用了。


下一节将会更精彩,敬请期待!!!


冬天的清晨唤醒你的应该是梦想吧。

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!









最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台