MVP和MVC区别


MVP 和 MVC 什么区别

MVC - Modle View Controller

MVC模式是一个集中在从UI的业务层(Model)分离出UI(View)的UI展示模式。主要独立出三块的主要职责 - View渲染UI元素,Controller响应UI动作,Model业务行为和状态的管理。大部分的执行中这三个块可以直接两两交互,一部分的执行中controller负责检测那个试图需要被展示。

MVP - Model View Presenter

MVP模式是一个基于MVP模式中的理念的一个UI展示模式。这个模式独立出四个块:- View 渲染UI元素,View interface 削弱presenter和它的view的耦和Presenter view/model之间的交互 model业务行为和状态的管理。一些执行中Presenter和一些服务层(service layer/Controller)来返回/持续化model。view interface和service layer 通常被用来更容易的给presenter和model写单元测试。

主要的好处

在决定设计模式的时候要考虑好他们的优劣。最大的缺点就是额外的复杂性和学习曲线。简单的解决方案可能不适合用设计模式,高级的解决方案通过使用设计模式获取很多好处。

Loose coupling 弱耦合

Presenter/Controller是UI代码和Model的中间层。这就使得view和model逐渐的彼此独立。

清晰划分指责

UI - 渲染UI元素 Presenter/Controller 响应UI事件和交互model Model- 业务行为和状态管理

测试驱动 Test Driven

这两个模式分别独立出的模块更容易的写UI测试。当用MVP模式的时候尤其准确,因为它只用interface来交互view。

代码复用

独立出设计模式中的各个模块能增加代码的复用。

隐藏数据访问

用这些模式能强迫你把数据访问的代码放在一个属于它的数据访问层。很多其他的设计模式也很典型的和MVP/MVC的数据访问一起工作。最常见的两个就是repository和unit of work。

灵活性/可修改

通过这些模式你的代码变得更容易修改。例如考虑到多少UI和数据访问技术在过去的几年中的改变和今天我们可以做出的选择,一个好的设计方案能同时支持很多UI和数据访问技术。

现在说说主要的区别

MVP

  1. View 对于model更弱的耦合。Presenter用来绑定model和view。

  2. 更容易unit test因为痛过interface来交互view。

  3. 通常vie和presenter是一一对应的。复杂的view可能有多个presenters。

MVC

  1. Controller 基于行为可以被多个views共享.
  2. 负责检测那个view 被现实。

引用 原文



Previous: Swift序列的操作
Next: Android 常见问题

Comments

comments powered by Disqus

© Copyright 2017 William Hu