软件架构之–MVC、MVP、MVVM

目录

    • MVC
      • 简介
      • 图示关系
      • 优缺点
        • 优点
        • 缺点
      • 应用场景
    • MVP
      • 简介
      • 图示关系
      • 优缺点
        • 优点
        • 缺点
      • 应用场景
      • Demo
    • MVVM

MVC

简介

MVC全名是Model View Controller,是 模型(model)-视图(view)-控制器(controller) 的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
在很长的一段时间MVC被用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。在Android中,Activity的角色宽泛的说就是Controller(实际上在MVC中很难区分Activity到底应该处于V还是C的角色,因为activity即包含了界面也包含了一部分逻辑处理),xml布局就是 View 层的表现,而 络请求的数据或者数据库表现为 Model 层。

简单概括就是:

项目 说明
View(视图层) 用户界面
Controller(控制层) 业务逻辑
Model(数据层) 数据保存

图示关系

下图表达出了三者之间的关系:

不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试–而不需要使用自动化的测试工具。

我们甚至可以在Model和View都没有完成时候,就可以通过编写Mock Object(即实现了Model和View的接口,但没有具体的内容的)来测试Presenter的逻辑。

在MVP里,应用程序的逻辑主要在Presenter来实现,其中的View是很薄的一层。 因此就有人提出了Presenter First的设计模式,就是根据User Story来首先设计和开发Presenter。在这个过程中,View是很简单的,能够把信息显示清楚就可以了。在后面,根据需要再随便更改View, 而对Presenter没有任何的影响了。

如果要实现的UI比较复杂,而且相关的显示逻辑还跟Model有关系,就可以在View和 Presenter之间放置一个Adapter。由这个 Adapter来访问Model和View,避免两者之间的关联。而同时,因为Adapter实现了View的接口,从而可以保证与Presenter之 间接口的不变。这样就可以保证View和Presenter之间接口的简洁,又不失去UI的灵活性。 2

总结如下

在MVP模式里,View只应该有简单的Set/Get的方法,用户用户输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接直接访问Model–这就是与MVC很大的不同之处。

优缺点

优点

  1. 模型与视图完全分离,修改视图完全不影响模型 1
  2. 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
  3. 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  4. 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)

缺点

由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了,那么视图很有可能也需要变更;代码量会增加,针对简单的业务逻辑也需要创建对应M、V、P层;

应用场景

虽然代码量会很大,但是代码结构清晰明了,可读性强,适用于中大型应用软件,前期可能觉得比较繁琐,后期维护起来就变得异常简单了。

Demo

这个是简单的例子:
采用了泛型优化MVP的类文件量
MVP demo

MVVM


  1. https://www.jianshu.com/p/ff6de219f988.html ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

  2. https://www.cnblogs.com/xianshui/p/8469158.html ??

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月6日
下一篇 2020年4月6日

相关推荐