MVC和MVP模式——什么区别?

来源:互联网 发布:地牢探测器JS手机版 编辑:程序博客网 时间:2024/05/19 22:48

原文地址:http://www.infragistics.com/community/blogs/todd_snyder/archive/2007/10/17/mvc-or-mvp-pattern-whats-the-difference.aspx

什么是模型-视图-控制器(MVC)之间的差异和模型视图主持人(MVP)的模式吗? 令人惊讶的是,答案是更复杂的比你会怀疑。 的一部分原因我认为许多开发人员回避使用模式是混乱的差异。

在我们深入研究差异让我们研究一下如何工作和关键利益的模式使用。 (MVC和MVP)模式已经使用了好几年,解决一个关键的面向对象主要就是分离的UI和业务层。 今天有许多框架是使用基于这些模式包括: JAVA Struts ROR微软智能客户端软件工厂(出租车) 微软网络客户端软件工厂 ,最近宣布 ASP。 净MVC框架 

模型-视图-控制器(MVC)模式

MVC模式是一种界面演示模式,着重于从业务层分离UI(视图)(模型)。 模式分离责任跨三个组成部分:视图负责渲染UI元素,控制器负责响应用户界面操作,和模型负责业务行为和状态管理。 在大多数实现这三个组件可以直接相互作用和在一些实现控制器负责确定哪些视图来显示( 前端控制器模式 ),

模型-视图-主持人(MVP)模式

 

MVP的模式是一个UI表示模式基于MVC模式的概念。 模式分离责任四个组成部分:视图负责渲染UI元素,视图接口用于松耦合的主持人从视图中,主持人负责视图和模型之间的交互,以及模型负责业务行为和状态管理。 在一些实现演讲者与服务(控制器)层进行交互检索/存储模型。 视图界面和服务层一般用于让主持人和模型编写单元测试更容易。

关键的好处

在使用任何模式开发人员需要考虑使用它的利弊。 有许多关键的好处使用MVC或MVP模式(请参阅下面的列表)。 但是,也有一些画背需要考虑。 最大的缺点是额外的复杂性和学习曲线。 虽然模式可能不适合做简单的解决方案,推动解决方案可以大大受益于使用模式。 我我的经验已经看到几个解决方案消除了大量的复杂但重构使用模式。

 

·          松散耦合的主持人/控制器是一个UI代码和模型之间的媒介。 这使得视图和模型相互独立地进化。

·          清晰的关注点分离/责任

    UI(或页面)——负责渲染UI元素

    主持人/控制器-负责对UI事件和与模型进行交互

    模型:负责业务行为和状态管理

·          测试驱动,通过隔离每个主要组件(UI、主持人/控制器和模型)更容易编写单元测试。 当使用MVP模式尤其如此,只有与视图使用接口。

·          代码重用,通过使用一个关注点分离/负责设计方法你将会增加代码重用。 尤其是当使用一个完整的域模型和保持所有的业务/状态管理逻辑。

·          隐藏数据访问——使用这些模式迫使你把数据访问代码,它属于一个数据访问层。 有其他一些模式,典型的作品MVP / MVC模式数据访问。 两种最常见的存储库和工作单元。 (见马丁-模式的企业应用程序的体系结构的更多细节)

·          灵活性/适应能力——通过孤立的大部分代码到主持人/控制器和模型组件代码库更能适应变化的。 例如考虑多少用户界面和数据访问技术改变了多年来和我们今天使用的选择的数量。 正确使用MVC设计解决方案或MVP可以支持多用户界面和数据访问技术在同一时间。

关键的不同点

那么真的是MVC和MVP模式之间的差异。 其实他们之间存在着很多差异。 这两种模式关注跨多组件分离的责任,促进松散耦合UI(视图)从业务层(模型)。   主要的差异是模式是如何实现,在一些高级场景需要主持人和控制器。

 

这里的关键差异模式:

 

·          MVP模式

    视图更松散耦合的模型。 主持人负责模型绑定到视图。

    单元测试更容易,因为交互视图是通过一个接口

    通常主持人一一对应。 复杂的视图可能多主持人。

 

·          MVC模式

    控制器是基于行为和可以在视图之间共享

    可以负责确定哪些视图来显示( 前端控制器模式 )

 

希望你发现这篇文章很有意思,它帮助澄清MVC和MVP模式之间的差异。 如果不是,不气馁的模式是强大的工具,可以有时难以使用。 要记住的一件事是,一个模式是一个蓝图,不是一个开箱即用的解决方案。 开发人员应该使用它们作为指导和修改实现根据他们的问题域。

PicklePumpers
0 0
原创粉丝点击