我同意chills42 的观点——MVP 的目标不是让presenter 如此通用,以至于它可以与任何UI 技术一起使用。目标是使模型和(也许)控制器具有通用性,以便您可以使用所需的任何技术构建 UI。
同样,这可能是我误解了你,但数据绑定与你的问题并不特别相关(也就是说我没有看到联系)。目标是这样的:
您设计您的应用程序逻辑,也称为控制器(例如,当 Bob 提交发票时,系统执行 x、y 和 z,然后向 Bob 显示发票列表)。
您设计您的业务数据,也称为模型(例如,具有行项目列表的发票)。
现在,您想知道,用户界面到底在哪里?您拥有知道如何指导您的流程的东西,并且您拥有执行此操作所需的所有数据,因此您只需要一些东西来向您展示这一切的样子。这就是主持人进来的地方。
您设计了一个与您的控制器和模型交互的 .NET WinForms 应用程序。您制作了一个漂亮的表单,为您的用户提供了一种创建发票的方法。然后,你将所有数据传递给你的控制器,控制器使用它,使用模型处理它,然后告诉你下一步做什么。您的 WinForms 应用程序愉快地继续其愉快的(不知情的)方式并按照指示执行,接收下一个表单的数据并显示它。
然后,你的老板进来说:“嘿,Jiho Han,你的这个应用程序完全成功了。我需要你为我构建一个 ASP.NET 应用程序和一个批处理器来完成所有这些工作。
废话。他要你做什么?哦,没问题。你使用了 MVP。您需要做的就是构建一个 ASP.NET UI(当然,它遵循 Web 标准),它将充当您所有数据的漂亮面孔。没问题——三天——发货。
这就是MVP的好处。您不必重写所有应用程序逻辑;您不必编写大量查询来将数据转换为不同的格式;你不必真正做任何工作。我的意思是,制作 UI 很有趣,对吧?现在由您来决定您是否认为这值得花时间,但几乎在任何实际软件中,您都会对这些组件进行某种分离,无论是 MVP 还是像 n-tier 这样更企业化的东西。