为什么要使用框架
使用框架,是为了提高生产效率。
框架就是这样一种套路,因为它已经通过某种范式,完成了对业务的解析、映射和分层,在充满未知的软件开发中,框架的存在使开发有一定规矩可循,使常见的问题容易得到解决,使开发人员更专注于具体业务。
一般来说,使用框架有这样几点好处:
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里面,保持代码的简洁
总的来说不要过度设计,对于软件工程来说,完善的设计起不到应有的效果,反而是快速交付,快速迭代的策略越来越被证明是一种低风险的模式。
分享到:
相关推荐
在Android开发中,"Retrofit+MVP+RxJava+Dagger2封装"是一个常见的高效、灵活的架构组合,用于构建复杂且可维护的应用程序。这个组合提供了强大的功能,包括网络请求、数据处理、依赖注入以及视图模型的管理。 **...
总结来说,"Android-MVPRxjava2Retrofit2Dagger2框架结合Demo"是一个综合性的示例,它展示了如何在Android应用中利用MVP设计模式组织结构,利用RxJava2处理异步操作,Retrofit2进行网络请求,以及Dagger2管理对象的...
在Android开发中,"Android-RxFlux2Retrofit2RxJava2Dagger2"是一个典型的集成框架,它集合了四个强大的库,分别是RxFlux、Retrofit、RxJava和Dagger2,用于构建高效、可维护的移动应用。下面我们将逐一深入探讨这些...
在Android应用开发中,"干货集中营Android app(MVP + RxJava2 + Dagger2 + Retrofit)"是一个采用一系列高级技术构建的项目,旨在提供高效、可维护的代码结构。这些技术包括Model-View-Presenter(MVP)架构模式、...
一款纯粹的阅读App,基于Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide 非常适合初学者学习。代码工整,适合研究
在MVP架构中,Presenter通常需要依赖Model和View,Dagger2可以帮助我们自动注入这些依赖,简化了组件之间的连接。 其次,RxJava是一个响应式编程库,它提供了一种处理异步数据流的方式。在Android应用中,RxJava...
【标题】"Kotlin新闻客户端 MVP RxJava Retrofit Dagger2.zip" 涵盖了现代Android应用开发中的四个关键技术和框架,这些技术对于构建高效、可维护的安卓应用程序至关重要。让我们逐一深入探讨这些技术: 1. **...
初始化的简单的app架构,基于Kotlin+ Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide 使用RxJava配合Retrofit2做网络请求 使用RxUtil对线程操作和网络请求结果处理做了封装 使用...
在Android应用开发中,组合使用Kotlin、MVP(Model-View-Presenter)设计模式、Retrofit2.0网络库、RxJava1.0响应式编程框架以及Dagger2依赖注入框架,是一种常见的高效开发方式。这篇内容将深入探讨这些技术在实际...
这一篇文章就不写技术分享了,好多新手不知道怎么搭建框架,下面直接分享一个本人搭建的android开发框架,该框架采用主流的mvp形式搭建,集成了rxjava+dagger2+retrofit2(okhttp3)+glide+Realm,当然都是一些主流...
本项目利用了okhttp、retrofit、rxjava和dagger2这四个强大的库来构建一个高效、灵活的MVP框架。 **okhttp** 是一个高效的HTTP客户端,由Square公司开发。它通过连接池和缓存机制,提供了快速、低内存占用的网络...
6. 错误处理可以通过RxJava2的onErrorResumeNext或 onErrorReturn等方法实现,确保即使在网络请求失败时,应用也能优雅地处理异常,避免崩溃。 通过以上步骤,我们可以构建出一个既实用又简约的网络请求框架,提高...
Android App基本mvp+dagger(dagger2.android)+rxjava2+retrofit+ormdb框架,有效的API+登陆登出完整闭环.Base Activity,Presenter ,View,Model 的抽象封装, http 请求封装&错误统一处理 ...
针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也...
在Android应用开发中,MVP(Model-View-Presenter)和Dagger 2框架的结合使用,能够提高代码的可维护性、可测试性和结构清晰度。本项目旨在提供一个基于Android Studio的实践示例,涵盖了网络访问和本地存储等功能。...
虎扑体育非官方客户端TLint MVP Dagger2 RxJava Retrofit Material Design.zip,TLint for 虎扑体育 基于Dagger2 RxJava Retrofit开发,采用MVP模式
大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据。通常在 android 中进行网络连接一般使用 Scoket 和...下面我将使Retrofit+Okhttp+Rxjava的方式为大家简述一下网络框架的搭建。
在`MyApplication`这个文件中,可能包含了项目的初始化设置,比如初始化RxJava、Retrofit、OkHttp3的配置,Dagger2的组件定义,以及全局的MVP架构设计。具体来说,可能会有网络请求的baseUrl配置,OkHttp3的拦截器...
在Android应用开发中,Model-View-Presenter(MVP)设计模式被广泛采用,它有助于分离界面展示逻辑和业务逻辑,提高代码可测试性。同时,RxJava是一个强大的响应式编程库,它允许开发者以声明式的方式处理异步数据流...
这个项目是一个基于Android平台的开发示例,它模仿了Google官方的一个MVP(Model-View-Presenter)架构的Demo,并且结合了RxJava、Retrofit2和Dagger2这三个流行的开源库。这些技术的组合旨在提供一个高效、可维护且...