MVC: Model - View - Controller
MVP: Model - View - Presenter
MVC和MVP到底有什么区别呢?
从上图可以看到在MVC里,View是可以直接访问Model的,从而View里面是能包含Model的信息的,不可避免还要包括一些业务逻辑。在MVP里更关注Model的不变,而同时有多个对Model的不同展示。
把Controller和View混在一起,会有一些弊端:
1、难以测试。
2、代码难以重用。
MVP是如何解决MVC的问题的?
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现,而且Presenter与具体的view是没有一点关联的,而是通过定义好的接口进行交互,从而使得在变更View的同时可以保持Presenter不变,即重用。
在MVP模式里,View只应该有简单的Set/Get方法,用户输入和设置显示的内容,除此不应该有更多的内容,绝不允许直接访问Model,这就是与MVC最大的不同之处。