Design patterns 使用MVP模式设计基于RCP的应用程序

Design patterns 使用MVP模式设计基于RCP的应用程序,design-patterns,eclipse-rcp,mvp,rcp,Design Patterns,Eclipse Rcp,Mvp,Rcp,我即将开始开发一个基于CRUD RCP的中型应用程序,我打算使用MVP(model view presenter)模式 我知道MVP和MVC之间的主要区别在于演示者更新视图,而控制器不更新 我真正不明白的是,在这个模式中,谁引用了什么。在一个教程中,我了解到视图有一个presenter实例变量(请参见:)。但是演示者还需要有对视图的引用。不是吗?所有这些都正确吗 有谁能解释一下,一个典型的MVP应用程序是如何按照谁拥有对什么的引用来构建的 从视图中添加的代码: button.addSelecti

我即将开始开发一个基于CRUD RCP的中型应用程序,我打算使用MVP(model view presenter)模式

我知道MVP和MVC之间的主要区别在于演示者更新视图,而控制器不更新

我真正不明白的是,在这个模式中,谁引用了什么。在一个教程中,我了解到视图有一个presenter实例变量(请参见:)。但是演示者还需要有对视图的引用。不是吗?所有这些都正确吗

有谁能解释一下,一个典型的MVP应用程序是如何按照谁拥有对什么的引用来构建的

从视图中添加的代码:

button.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                // can we reference the presenter here? how?
            }
        });
使用下面提供的链接中的信息,我得出了下面的图表。请注意,该视图引用了演示者,反之亦然(请参见中的选项一):


实际上,MVP有两种不同的风格。Fowler在2004年描述了MVP模式,他将模式分为(sc)和(pv)。在sc中,视图绑定到模型,而在pv中,视图不绑定到模型,在pv中,视图仅由演示者直接更改


我对的回答有更多细节。

谢谢Marijn。我在我的帖子中添加了代码。完善我的问题:就演讲者/控制者而言,什么应该去
\\here
?例如,视图是否可以引用演示者/控制器?我似乎在sc或pv中都没有看到任何表明这一点的内容……视图可以包含演示者订阅的事件。您还可以让视图保存对演示者的引用(只知道其接口类型)。在后一种情况下,vuew和presenter相互引用,从而引出问题。好的。您能否确认您的帖子中的选项1仅适用于RCP,因为视图的创建实际上不在我的控制之下?已确认,假设视图的创建不在您的控制之下,并且声明我对RCP几乎一无所知。例如,RCP可能会为您提供一个与“视图创建引导程序”交互的选项,这将使选项3也保持打开状态。我将MVP应用到winforms应用程序中,遇到了类似的问题:即winform基础设施对视图的构造和销毁提出了一些要求。在这些情况下,为mvp triad创建我自己的引导程序真的很有帮助。