[源码]Android-Architecture及对MVP的理解
来源:互联网 发布:淘宝运费价格表监控 编辑:程序博客网 时间:2024/06/05 05:43
Android-Architecture是Google给出的MVP架构及其变种示例。各个分支代表了不同的架构。
todo-mvp:原生态的MVP,其实就是说明了一下,在使用Fragment时MVP和Android组件是怎么对应的。
- Model:纯Bean,既是View Model,又是Biz Model。Model不负责存取和转换逻辑
- View:对应着Fragment和Android View,主要负责事件到Presenter函数的对应、原子化的显示功能。前者是Presenter接口的调用,后者是View为Presenter暴露的接口
- Presenter:独立的类,主要提供简单的事件处理功能。
- 这种方式,声明了View和Presenter的interface,通过这个隔离了实现。
- 还有个比较好的方法来组织多层次的数据存储,使用同一个interface声明同一个TasksDataSource接口,不同的数据源各自实现内部逻辑。最后,Cache和调度由一个TasksRepository负责。Cache逻辑太简单,又有太多的各种更新逻辑,放到最高层,可以简化接口。
todo-mvp-clean:clean-architecture的例子,基于MVP而来。clean本来就是要隔离系统的变化,所以对应关系更加脱离了Android系统
- Entity(不变式):对应了Model和接口,包括了Bean和MVP中的interface声明、DataSource声明
- UseCase(功能):对应了Presenter中独立存在的功能,可以看做使用Command模式抽象了一下Presenter的功能
- Interface Adapters(粘合):对应了Presenter的总体逻辑。相较于MVP中的Presenter,功能更加单一,没有了具体的业务逻辑
- Frameworks&Drivers(外围):View和Storage都可以算在这里面,跟runtime相关
- 理解层面可以按上面总结,代码层面最大的变化其实就是Presenter又分了一层
todo-mvp-rxjava:只是学习一下rx在生产环境长什么样。
- 不得不说,lamda表达式用到各种listener上很舒爽
- 不得不说,Java8实在是应该赶紧用上
- rx看得到的好处,就是把每一步遍历(flatMap)、合并(toList)、finally(doOnTerminate)等行为省略,改用对应的rx函数来做。如果熟悉,会非常易读、易维护
- CompositeSubscription用来统一管理一个类中的所有订阅
自己的想法:
- 抽象来说,一个App大概可以分为几个层面,依次向上依赖:
- BizModel:业务模型,最核心的数据模型,大概相当于数据库的表。提供一个Bean
- ModelStore:数据存取,核心数据存取逻辑,提供DAO
- BizLogic:业务逻辑,将一段业务封装成一个小服务,供外部使用
- ViewLogic:显示逻辑,将用户操作与业务逻辑粘合起来,提供ViewModel和View事件处理能力
- ViewModel:显示模型,仅为显示提供完整的内容,View层仅使用和修改该Model
- View:显示内容,真正的处理显示和用户事件
- 各个MVC框架变种都是用不同的方式合并上述几个层面,或者是做各层面间交互的解耦
- 抽象来说,一个App大概可以分为几个层面,依次向上依赖:
附依据该想法的简单demo
0 0
- [源码]Android-Architecture及对MVP的理解
- mvp part1 android-mvp-architecture
- Google 的android-architecture,todo-mvp解析
- MVP Architecture on Android
- 【android-architecture】todo-mvp
- Android MVP 的理解
- 个人对mvp的理解
- 对MVP简单的理解
- 对Android-MVP架构模式的理解与初尝试
- Android MVP架构,android-architecture
- 对Clean Architecture的一些理解
- Android-Architecture之todo-mvp
- Android Architecture Components+MVP 实战
- Android----MVP模式的理解
- Android MVP模式的理解
- Android MVP的一点理解
- 基于Android Architecture Blueprints的MVP案例分析与实现
- 对MVC、MVP、MVVM的理解
- Centos下node安装
- 插件化开发---DroidPlugin对Servie的管理
- 35. Search Insert Position
- request请求数据包组成:请求行(request line)消息头(header)实体内容(Body)
- JavaScript实现瀑布流效果
- [源码]Android-Architecture及对MVP的理解
- android ViewPager 解决自动滑动到最后一页,继续滑动的效果问题
- 安卓-自定义标题栏组件
- 文章标题
- 点法式方程
- Apache Spark进行大数据处理 -- 第一部分:介绍
- JAVA垃圾回收机制
- 收藏的博客列表
- wwwwwww