MVC和MVP的区别

时间:2022-04-24 09:32:00

MVC: Model - View - Controller

MVP: Model - View - Presenter

MVC和MVP到底有什么区别呢?

MVC和MVP的区别

从上图可以看到在MVC里,View是可以直接访问Model的,从而View里面是能包含Model的信息的,不可避免还要包括一些业务逻辑。在MVC里更关注Model的不变,而同时有多个对Model的不同展示。

把Controller和View混在一起,会有一些弊端:

1、难以测试。

2、代码难以重用。

MVP是如何解决MVC的问题的?

MVC和MVP的区别

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现,而且Presenter与具体的view是没有一点关联的,而是通过定义好的接口进行交互,从而使得在变更View的同时可以保持Presenter不变,即重用。

在MVP模式里,View只应该有简单的Set/Get方法,用户输入和设置显示的内容,除此不应该有更多的内容,绝不允许直接访问Model,这就是与MVC最大的不同之处