MVC模式中的控制器与MVP模式中的演示者之间有什么区别?您能否提供链接以了解这两者的优点和使用方案?
答案 0 :(得分:11)
在MVP中,Presenter采用“中间人”的功能(由MVC中的应用程序控制器播放)。此外,View负责处理UI事件(如mouseDown,keyDown等),这些事件曾经是Controller的工作。最终,模型严格地成为域模型。
这是more detailed explanation on the differences between the two。
另见Martin Fowler的Retirement note for Model View Presenter。
答案 1 :(得分:7)
在MVC中,视图仅由模型更新(通过监听其事件)。它永远不会被控制器更新。当您需要为视图格式化模型数据时,这是有问题的,因此需要MVP。
在MVP-Passive View中,视图仅由演示者更新(演示者设置视图属性)。在更新视图之前,演示者会监听模型上的事件[如果需要,可以修改数据]。
在MVP-Supervising Controller中,视图由模型或演示者更新。如果不需要格式化,视图将通过模型自行更新。如果需要格式化,它将通过演示者自行更新。