MVC和MVP到底有什么区别呢?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
从这幅图可以看到,我们可以看到在MVC里,View是可以直接访问Model的!
把Controller和View混在一起,有什么问题?
1.难以测试。
必须手动点击,使用各种自动化的测试工具。
2.代码难以重用。
UI是很难重用,因为要求总是不同。所以,导致重复的代码四处都是,维护麻烦。
MVP是如何解决MVC的问题的?
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在 Presenter里实现。
MVP的优点
编辑
1、模型与视图完全分离,我们可以修改视图而不影响模型
2、可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
3、我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
MVP的缺点
编辑
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了,那么视图很有可能也需要变更。