Android-框架-学习 CleanArchitecture 心得体会
2017-11-18 16:37
281 查看
原文出处:http://www.jianshu.com/p/cba6663435c7
最近 Android-CleanArchitecture 闹得是沸沸扬扬,然而笔者也不甘寂寞,一直在研究这个东西,也fork过一些关于cleanArchitecture开源的项目进行了学习:
比如 android10: https://github.com/android10/Android-CleanArchitecture
比如 googlesample: https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/
比如 dmilicic: https://github.com/dmilicic/Android-Clean-Boilerplate
关于探讨CleanArchitecture架构方面的文章也很多,但是,究其源头,无非都是出自uncle-bob 叔叔的这篇
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
至于大家为什么倾向于cleanArchitecture,那一定是有他的道理的。就好比,对比传统开发的MVC开发方式,你会得到以下好处。
代码复用性更高
更易于测试
耦合度更小
下面这幅图,是googlesample下面的了。
下面这幅图,是uncle-bob画的了。
细心的你已经发现了,这两个图其实是一个意思。从大的方向上看,都是三层结构。
DataLayer
最底层,完全不知道有DomainLayer,PresentationLayer的存在,听到这里,你还在怀疑这个架构的可测试性和耦合度低吗?那么DataLayer的主要职责是什么?
1、从网络获取数据,向网络提交数据,总之就是和网络打交道。
2、从本地DB,shareprefence等等,内存等,总之就是本地获取数据,缓存数据,总之就是和本地数据打交道的。
这也就是你为什么看到很多Android-CleanArchitecture 的 package里面有一个local ,和一个remote了,然而是否有必要分的这么细,个人习惯啊~,不强求。反正这一层如果出现了 anroid.os*,我就更你拼了,对不起,你已经偏离了Android-CleanArchitecture了。
DomainLayer
中间层,他完全不知道有一个PresentationLayer存在,他只知道,有DataLayer,他可以基于这些数据,建立很多玩法,比如去网络拿一堆名人回来,然后将这些数据缓存到本地,在比如,他写了一篇黑某明星的文章,将文字发布到网上等等。因此他的主要职责是:
1、控制DataLayer对数据做增删改查,没错,就这么简单,然后就没有然后了。
2、真的没有了,不骗你,但是这一层如果出现了 anroid.os*,我就更你拼了,对不起,你已经偏离了Android-CleanArchitecture了。
PresentationLayer
最上层,他知道DomainLayer,有人要问了,那么他知道DataLayer,回答,他知道你妹~ 他累不累啊,要知道这么多?
因此,它只知道DomainLayer,那么他的职责有哪些?
1、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
2、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
3、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
这年头,重要的时间一定要说三遍,而且,就是这么任性~~
分析了每层之后,我们发现,依赖的关系是 PresentationLayer -->
DomainLayer --> DataLayer 的。
DomainLayer --> DataLayer不知道有android平台的存在。
因此,只要我们围绕这个原则去做架构,那么就称的上是Android-CleanArchitecture
作者:brzhang
链接:http://www.jianshu.com/p/cba6663435c7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最近 Android-CleanArchitecture 闹得是沸沸扬扬,然而笔者也不甘寂寞,一直在研究这个东西,也fork过一些关于cleanArchitecture开源的项目进行了学习:
比如 android10: https://github.com/android10/Android-CleanArchitecture
比如 googlesample: https://github.com/googlesamples/android-architecture/tree/todo-mvp-clean/
比如 dmilicic: https://github.com/dmilicic/Android-Clean-Boilerplate
关于探讨CleanArchitecture架构方面的文章也很多,但是,究其源头,无非都是出自uncle-bob 叔叔的这篇
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
至于大家为什么倾向于cleanArchitecture,那一定是有他的道理的。就好比,对比传统开发的MVC开发方式,你会得到以下好处。
代码复用性更高
更易于测试
耦合度更小
下面这幅图,是googlesample下面的了。
下面这幅图,是uncle-bob画的了。
细心的你已经发现了,这两个图其实是一个意思。从大的方向上看,都是三层结构。
DataLayer
最底层,完全不知道有DomainLayer,PresentationLayer的存在,听到这里,你还在怀疑这个架构的可测试性和耦合度低吗?那么DataLayer的主要职责是什么?
1、从网络获取数据,向网络提交数据,总之就是和网络打交道。
2、从本地DB,shareprefence等等,内存等,总之就是本地获取数据,缓存数据,总之就是和本地数据打交道的。
这也就是你为什么看到很多Android-CleanArchitecture 的 package里面有一个local ,和一个remote了,然而是否有必要分的这么细,个人习惯啊~,不强求。反正这一层如果出现了 anroid.os*,我就更你拼了,对不起,你已经偏离了Android-CleanArchitecture了。
DomainLayer
中间层,他完全不知道有一个PresentationLayer存在,他只知道,有DataLayer,他可以基于这些数据,建立很多玩法,比如去网络拿一堆名人回来,然后将这些数据缓存到本地,在比如,他写了一篇黑某明星的文章,将文字发布到网上等等。因此他的主要职责是:
1、控制DataLayer对数据做增删改查,没错,就这么简单,然后就没有然后了。
2、真的没有了,不骗你,但是这一层如果出现了 anroid.os*,我就更你拼了,对不起,你已经偏离了Android-CleanArchitecture了。
PresentationLayer
最上层,他知道DomainLayer,有人要问了,那么他知道DataLayer,回答,他知道你妹~ 他累不累啊,要知道这么多?
因此,它只知道DomainLayer,那么他的职责有哪些?
1、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
2、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
3、通知DomainLayer有活干了,根据DomainLayer反馈变化界面
这年头,重要的时间一定要说三遍,而且,就是这么任性~~
分析了每层之后,我们发现,依赖的关系是 PresentationLayer -->
DomainLayer --> DataLayer 的。
DomainLayer --> DataLayer不知道有android平台的存在。
因此,只要我们围绕这个原则去做架构,那么就称的上是Android-CleanArchitecture
作者:brzhang
链接:http://www.jianshu.com/p/cba6663435c7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- Android:一个妹zhi的学习之路_心得体会
- FLEX与Cairngorm框架学习使用心得体会
- SSH三大框架学习心得体会
- 学习web.py Flask框架心得体会
- Android 学习心得体会
- FLEX与Cairngorm框架学习使用心得体会
- 学习JAVA框架的心得体会
- 学习Struct框架是遇到的问题及心得体会
- Android 学习心得体会
- 网络报表学习体会心得!
- 学习党的十7大心得体会
- 学习心得:数据结构与算法之回朔(一个“框架”)
- 师德师风学习心得体会(二)
- 奥运在我心中:奥运学习心得体会思想报告范文
- 学习java心得体会(一)
- 学习java心得体会(二)
- Perl 学习心得体会
- (转贴)正则表达式学习心得体会(4)
- 正则表达式学习心得体会(3)(转)
- 学习心得体会