建设一个电子文学网站资金多少,护理专业简历,全国连锁装修公司加盟,官网网站怎么做一、概述MVP 是从经典的模式MVC演变而来#xff0c;它们的基本思想有相通的地方#xff1a;Controller/Presenter负责逻辑的处理#xff0c;Model提供数据#xff0c;View负责显示。二、MVC和MVP的区别作为一种新的模式#xff0c;MVP与MVC有着一个重大的区别#xff1a;… 一、概述 MVP 是从经典的模式MVC演变而来它们的基本思想有相通的地方Controller/Presenter负责逻辑的处理Model提供数据View负责显示。 二、MVC和MVP的区别 作为一种新的模式MVP与MVC有着一个重大的区别在MVP中View并不直接使用Model它们之间的通信是通过Presenter (MVC中的Controller)来进行的所有的交互都发生在Presenter内部而在MVC中View会直接从Model中读取数据而不是通过 Controller。在MVC里View是可以直接访问Model的从而View里会包含Model信息不可避免的还要包括一些业务逻辑。 在MVC模型里更关注的Model的不变而同时有多个对Model的不同显示即View。所以在MVC模型里Model不依赖于View但是View是依赖于Model的。不仅如此因为有一些业务逻辑在View里实现了导致要更改View也是比较困难的至少那些业务逻辑是无法重用的。 MVP模式实现了苹果提倡的MVC模式将Model和View完全隔离。 三、MVP如何解决MVC的问题 在MVP里Presenter完全把Model和View进行了分离主要的程序逻辑在Presenter里实现。而且Presenter与具体的View是没有直接关联的而是通过定义好的接口进行交互从而使得在变更View时候可以保持Presenter的不变即重用 不仅如此我们还可以编写测试用的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的灵活性。 在MVP模式里View只应该有简单的Set/Get的方法用户输入和设置界面显示的内容除此就不应该有更多的内容绝不容许直接访问Model。 实现MVP时应该由UIViewController来充当Presenter的角色然后把UIViewController的View子类化将View逻辑单独抽离出来管理。 四、MVP的优点 1、模型与视图完全分离我们可以修改视图而不影响模型 2、可以更高效地使用模型因为所有的交互都发生在一个地方——Presenter内部 3、我们可以将一个Presenter用于多个视图而不需要改变Presenter的逻辑。这个特性非常的有用因为视图的变化总是比模型的变化频繁。 4、如果我们把逻辑放在Presenter中那么我们就可以脱离用户接口来测试这些逻辑单元测试 五、MVP的缺点 由于对视图的渲染放在了Presenter中所以视图和Presenter的交互会过于频繁。还有一点需要明白如果Presenter过多地渲染了视图往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更那么Presenter也需要变更了。比如说原本用来呈现Html的Presenter现在也需要用于呈现Pdf了那么视图很有可能也需要变更。 转自http://baike.baidu.com/subview/7294/10754970.htm#viewPageContent