Android开发架构模式

MVC模式

        MVC(Model-View-Controller,模型-视图-控制器)模式是20世纪80年代Smalltalk-80出现的一种软件设计模式,其后来得到了广泛的应用。它用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,无须重新编写业务逻辑。Android中MVC的角色定义如下。

        •模型层(Model):我们针对业务模型,建立的数据结构和相关的类,就可以理解为Model。Model是与View无关,而与业务相关的。

        •视图层(View):一般采用 XML 文件或者 Java 代码进行界面的描述,也可以使用JavaScript+HTML等方式作为View层。

        •控制层(Controller):Android 的控制层通常在 Activity、Fragment 或者由它们控制的其他业务类中。

Android中的MVC也有它的缺点:

        •Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户界面,接受并处理来自用户的操作请求,进而做出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。

        •View层和Model层相互耦合,不易开发和维护。为了解决以上问题,产生了MVP以及MVVP这两种框架。关于MVC,这里就不用代码来举例了,想必读者应该已经非常熟悉了。接下来我们学习MVP模式。

MVP模式

        MVP(Model-View-Presenter)是MVC的演化版本,MVP的角色定义如下。

        •Model:主要提供数据的存取功能。Presenter需要通过Model层来存储、获取数据。

        •View:负责处理用户事件和视图部分的展示。在Android中,它可能是Activity、Fragment类或者是某个View控件。

        •Presenter:作为View和Model之间沟通的桥梁,它从Model层检索数据后返回给View层,使得View和Model之间没有耦合。

        在MVP里(见图10-2),Presenter完全将Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时可以保持Presenter的不变,这点符合面向接口编程的特点。View只应该有简单的Set/Get方法,以及用户输入和设置界面显示的内容,除此之外就不应该有更多的内容。绝不允许View直接访问Model,这就是其与MVC的很大不同之处。

MVVM模式

        MVVM(Model-View-ViewModel)最早于2005年被微软的WPF和Silverlight的架构师John Gossman提出。将Presenter改为ViewModel,其和MVP类似,不同的是ViewModel跟Model和View进行双向绑定:当View发生改变时,ViewModel通知Model进行更新数据;同理Model数据更新后,ViewModel通知View更新。MVVM的结构图如图10-5所示。在2015年Google的I/O大会中,发布了MVVM的支持库Data Binding。因此,在讲到MVVM的实现前,我们首先要了解Data Binding。

        解析Data Binding

        在 Data Binding 之前,我们不可避免地要编写大量诸如findViewById()、setText()和setOnClickListener()等代码。通过 Data Binding,我们可以通过声明式布局以精简的代码来绑定应用程序逻辑和布局,这样就不用编写大量的模板代码了。若想使用 Data Binding,要确保Android 的 Gradle 插件版本不低于1.5.0-alpha1,Android Studio的版本不低于1.3。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟、。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值