【问题标题】:In MVP should my presenter provide views to its view?在 MVP 中,我的演示者是否应该为其视图提供视图?
【发布时间】:2011-12-15 16:35:11
【问题描述】:
我只是在学习如何使用 MVP,我想确保我“做得对”。
我有一个关联演示者的主视图。这个主视图由几个子组件组成,其中至少一个可以互换。所以我把这些子组件变成了他们自己的视图/演示者对。
我目前的项目设置方式是主视图/演示者从项目中启动。当主演示者被实例化时,它会调用创建其他视图/演示者对的工厂函数。演示者然后将对每个其他视图的引用传递给主视图,然后在主视图中添加它们。
这种方式对我来说似乎更有意义,但我想确保我走在正确的轨道上。
【问题讨论】:
标签:
design-patterns
language-agnostic
mvp
【解决方案1】:
通常,Presenter 是一个独立于 View 的类,因此它们是模块化的,Presenter 可以自行进行单元测试(尽管我在实践中很少觉得需要这样做)。
为了构建一个窗口,我使用了一个WindowPresenter,其中包含一个WindowView
- 使用所有
Views 构建和执行窗口布局
- 将所有
Views 与它们的Presenters 和Models 连接起来(如果有的话)
通常,我只是将Model 和View 传递给Presenter 的构造函数,虽然我听说其他人使用依赖注入框架。
总之,听起来你做得对,除了 Presenter 和 View 通常是单独的类。有很多方法可以将 MVP 三元组连接在一起,通常我认为这是在顶级 Presenter 类中完成的,但请尽可能做最有意义的事情。