为什么要使用框架
使用框架,是为了提高生产效率。
框架就是这样一种套路,因为它已经通过某种范式,完成了对业务的解析、映射和分层,在充满未知的软件开发中,框架的存在使开发有一定规矩可循,使常见的问题容易得到解决,使开发人员更专注于具体业务。
一般来说,使用框架有这样几点好处:
1、加快开发速度。很多框架会帮你实现一些通用的、偏底层的实现、例如用IDE绘制软件界面、用Hibernate读写数据库、用EventBus传递事件、用HttpClient处理网络请求等(Android开发的框架会更多一些),除非是特殊的环境或有特别的诉求,否则没有开发者愿意花费大量的时间和精力,自己再造一遍轮子。
2、降低开发风险。还是造轮子的问题,每个轮子都会有缺陷,但是大家都在用的轮子,相对更加可靠,发现缺陷也容易及时得到修复。
3、方便团队协作。一般情况下,软件开发都是团队行为,团队开发就要求在成员之间协调一致地并行工作,这就要求接口一致、风格一致等,这会带来很多管理上的问题,而使用框架能较好地辅助这一点。
4、框架本身的优势。每个框架的出现都是为了解决某些问题,像我们今天要讨论的MVP、Flux和RxAndroid,都是为了解决日益复杂的业务逻辑导致软件不可控的问题,MVP的思路是“挪”,在MVC的基础上把业务逻辑从View中挪走;Flux的思路是“单向流”,用严格的单向数据流去实现比较容易跟踪检测的逻辑结构;RxAndroid的思路则是“链式逻辑”,用函数反应式编程的思想把逻辑、代码和线程统统简化为一条链式调用。
Flux是一个单向环,它实现业务的基本流程如下:
1、View响应操作并创建对应的Action
2、Action调用单例的Dispatcher去统一处理所有请求
3、Dispatcher持有所有Store对象,通过回调让Store处理数据
4、Store处理数据后,发出事件通知View更新解密
5、View接收Store的事件后,刷新页面
MVP优点:解决了Activity过于膨胀,把业务逻辑放在了Presenter层。
缺点:长期下去,业务繁杂,难以追踪逻辑运转和数据状态
RXFlux2有点:单向数据流,每个业务都是从某处进入Dispatcher单例中处理,再去往某处结束,中间不可能循环,这种机制能在同一个地方查询状态、改变状态、传播状态的变化,这就是MVP缺少的那种状态管理工具。
缺点:代码复用差,action类膨胀
Rxjava优点:主要用在业务逻辑处理上,把复杂的异步逻辑写成一条链式结构的代码,让逻辑和代码更加简洁
缺点:代码因为简洁变的紧凑,对排查问题增加了难度,给维护增加了难度
Dagger2优点:
1,解决多实例依赖创建问题。如:new A(new B(new C())
2,更好的管理对象的生命周期
3,代码规范,解偶好,扩展能力强。类的依赖都使用@Component、@Module、@Inject的规范实现。
4,最重要的:代码看起来比较装逼
如何选择
在框架上,没有最好的框架,只有合适的框架
特别很多框架是一种编程思想,不要为了使用而使用,能恰到好处的解决问题就是适合你的
特别当你有个界面很简单,没有很多的互动,就可以不使用框架,都写在activity里面,保持代码的简洁
总的来说不要过度设计,对于软件工程来说,完善的设计起不到应有的效果,反而是快速交付,快速迭代的策略越来越被证明是一种低风险的模式。
分享到:
相关推荐
Retroft+MVP+RxJava+Dagger2封装,适用于大多数的项目
MVP Rxjava2 Retrofit2 Dagger2 框架结合Demo
RxFlux2 Retrofit2 RxJava2 Dagger2
一款纯粹的阅读App,基于Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide 非常适合初学者学习。代码工整,适合研究
干货集中营Android app(MVP + RxJava2 + Dagger2 + Retrofit)
dagger2,rxjava ,retrofit三大框架实现mvp架构(androidstudio版本),有兴趣的下载参考下
初始化的简单的app架构,基于Kotlin+ Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide 使用RxJava配合Retrofit2做网络请求 使用RxUtil对线程操作和网络请求结果处理做了封装 使用...
一款Kotlin语言新闻客户端, MVP RxJava Retrofit Dagger2,总体体验效果还不错,功能和数据相关还算齐全。
Android开发Kotlin代码下的MVP模式+Retrofit2.0+RxJava1.0+Dagger2框架封装,非常适合小白。
MVP okhttp+retrofit+rxjava+dagger2实现mvp框架
这一篇文章就不写技术分享了,好多新手不知道怎么搭建框架,下面直接分享一个本人搭建的android开发框架,该框架采用主流的mvp形式搭建,集成了rxjava+dagger2+retrofit2(okhttp3)+glide+Realm,当然都是一些主流...
Android App基本mvp+dagger(dagger2.android)+rxjava2+retrofit+ormdb框架,有效的API+登陆登出完整闭环.Base Activity,Presenter ,View,Model 的抽象封装, http 请求封装&错误统一处理 ...
虎扑体育非官方客户端TLint MVP Dagger2 RxJava Retrofit Material Design.zip,TLint for 虎扑体育 基于Dagger2 RxJava Retrofit开发,采用MVP模式
本项目支持Android studio软件,内容有mvp+dagger2框架,网络访问,本地存储等
RxJava+Retrofit+OkHttp3+Dagger2+MVP构建Android项目简单例子
大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 android 中进行网络连接一般使用 Scoket 和...下面我将使Retrofit+Okhttp+Rxjava的方式为大家简述一下网络框架的搭建。
此项目是一个适合刚入门安卓开发的且熟悉Kotlin的练手小项目,基于《Kotlin-Android开发之MVP模式+Retrofit2.0+RxJava1.0+Dagger2框架封装》开发而成,实现了新闻的分类浏览、历史记录、我的收藏以及小视频的播放,...
Melophile 使用RxJava2, Retrofit2, Dagger2 and clean architecture开发的音乐App
Google官方MVP+RxJava+Retrofit2+Dagger2的Demo的模仿自作品
dagger2+MVP