解耦的常用套路
2017-08-08 本文已影响22人
王小贱_ww
1.png
通常我们在网上找的
第三方开源lib(好比高层模块),我们自己实现的部分好比底层模块,我们通过gradler的方式引入,但是出现扩展问题时,我们需要download下来源码进行修改。
当我们写项目的时候,改变依赖,低层实现类抽象出来,放到高层类里面。就好比GpsTracker,我们不能在高层类里面去实例一个BaiduTracker(具体实现),我们抽象出来一个LocationTracker,让其成为高层的成员变量,通过工厂模式实例化。
- 高层和低层分别new出来,通过set的方法依赖
-
通过Helper实现低层,高层依赖Helper
3.PNG
为什么会有接口回调?
如果没有接口回调,高层驱动低层,低层反馈给高层,二者相互引用,互相持有,如果低层想回调高层的方法,即对象.方法,低层调用高层的方法,不应该允许这种行为,因为高层是concroller,控制的模块流程,不应该调用高层的东西,这时候接口就来了。
高层抽象,低层实现,低层回调接口,高层实现接口。