MVC/MVP在android中的实践
Posted LjRAndroid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC/MVP在android中的实践相关的知识,希望对你有一定的参考价值。
MVC
框架MVC模式的实践
MVC介绍:
MVC (Model View Controller),是模型(model)视图(view)控制器(controller)的缩写,一种软件设计模式,用于组织代码用一种功能模块和数据模块分离的方法。
Model:模型层,负责处理数据的加载或者存储
View:视图层,负责界面数据的展示,与用户进行交互
Controller:控制器层,负责逻辑业务的处理
MVC执行的基本流程:
首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结果交给某个视图进行格式化输出给用户。另外,View是可以直接访问Model来进行数据的处理的.
对MVC的认识:
在MVC里,View是可以直接访问Model的。从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
MVC的缺点和优点:
优点:
耦合性低
重用性高
生命周期成本低
部署快
可维护性高
有利软件工程化管理
缺点:
没有明确的定义
不适合小型,中等规模的应用程序
增加系统结构和实现的复杂性
视图与控制器间的过于紧密的连接
视图对模型数据的低效率访问
一般高级的界面工具或构造器不支持模式
MVC实践:
使用Recyclerview演示
实体类:PersonBean对象
模型类(Model层): 通常是对数据库的操作或者是通过网络请求获取网络数据的操作。
控制器(Controller层):根据Model层的方法,加上我们的业务逻辑处理,对外提供方法并暴露接口。
视图(View层):我们操作Controller获取List数据填充到RecyclerView中,同时还可以进行其他操作。
效果图:
MVP
框架MVP模式的实践
MVP介绍:
MVP模式(Model View Presenter)可以说是MVC模式(Model View Controller)在android开发上的一种变种、进化模式。
Model:数据层,负责处理数据的加载或者存储。
View:视图层,负责界面数据的展示,与用户进行交互。
Presenter:中间者,绑定Model层和View层,是Model与View之间的桥梁。
MVP执行的基本流程:
首先视图接受用户输入请求,然后将请求传递给Presenter,Presenter再调用某个模型来处理用户的请求,模型中修改数据后传递更新数据到Presenter中,Presenter再将处理后的结果交给视图进行格式化输出给用户。
对MVP的认识:
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责视图。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
MVP的优点和缺点:
优点:
模型与视图完全分离,我们可以修改视图而不影响模型
可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁
如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
缺点:
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。
MVC实践:
使用Recyclerview演示
实体类:PetBean对象
模型类(Model层),模型类分为两个类:
1、模型抽象类:对模型的方法的抽象,方便阅读该模型层有哪些功能,类似于说明书。
2、模型实现类:通常是对本地数据库的操作或者是通过网络请求获取网络数据的操作。
视图类(View层) 视图类分为两个类:
1.对视图的方法的抽象,方便阅读该视图层有哪些功能,类似于说明书。
2.实现我们的视图抽象类,并使用presenter的方法。
中间者(Presenter):绑定Model层和View层,操作Model数据,并在View更新。
效果图:
源码:https://github.com/ljrRookie/MVC_MVP(点击阅读原文)
以上是关于MVC/MVP在android中的实践的主要内容,如果未能解决你的问题,请参考以下文章