在MVP模式中,视图和模型之间不存在依赖关系。一切都由主持人完成。实现MVP的最佳方法
在我们的GWT项目中,我们实现了所有我们的MVP类,如GWT .page所示。要访问视图,我们的主持人使用的界面是这样的:
public interface Display {
HasClickHandlers getAddButton();
HasClickHandlers getDeleteButton();
...
}
所以,主持人会从视图按钮,并应用到其点击处理它。
但这种感觉对我来说太错了。这违反了单一责任原则以及信息隐藏原则。主持人不应该了解视图内部的任何内容(即使我们得到抽象的HasClickHandlers)。
在我看来,我们应该更好地使用这种模式:
public interface Display {
void setPresenter(Presenter p);
}
public interface Presenter {
void onAdd();
void onDelete();
}
因此,有观点告诉主持人积极,有些互动发生。但不是在哪个视图元素上。 我的团队合作伙伴认为,在第一种解决方案中,我们避免了循环依赖。那就对了。但无论如何,我宁愿采用第二种方式,因为这些模块可以更好地分离,并且可以独立维护。
有什么优点/缺点?
你的问题似乎是StackOverflow的主题,因为它主要是基于意见的。您可能想查看[代码审查](https://codereview.stackexchange.com/help/on-topic),但请确保您的问题首先适合您。 – Baz
我想知道给我一个更好的感觉,使用哪个优点/缺点。 –
是的,我明白,但这样的问题在这里是无关紧要的。请阅读[帮助页](https://stackoverflow.com/help/on-topic)关于题目的问题类型:“太宽泛,不清楚,不完整或主要基于意见的问题* *可能会被社区搁置,直到他们得到改善。“ – Baz