通过接口搜索 class-binding 的示例
Searching for an example of class-binding by a interface
我正在尝试在 Java 中实现一个 MVP 模式示例
但是我不知道Presenter和View之间的接口连接是如何工作的!有人知道这方面的一个很好的例子吗?
更多详情:
在某些来源中,class 图看起来像这样 diagram
Presenter 和 View 之间的箭头被一个球打断了。这是一个接口的符号吧?
Presenter 知道View,View 也知道Presenter,因此两者都需要相互引用。为了测试,我不想在构造函数中写 new ..();
。
如果我通过构造函数设置 View- 和 Presentor- 引用,它看起来像
这个:
CentralView myView = new CentralView(myPresenter);
CenterPresenter myPresenter = new CenterPresenter(myView);
我希望举个例子来说明它是如何工作的,在构造函数中没有 "new",可以测试并且没有 getter 和 setter。
我觉得这个最简单:
Model model = new Model();
View view = new View();
Presenter presenter = new Presenter(model, view);
view.setPresenter(presenter);
但是,如果你坚持要"no setters",你真的应该去看看依赖注入。例如,使用 guice:
// can resolve dependencies by itself
Presenter presenter = new Presenter();
// Dependency injection hard at work within your constructor
@Inject
Presenter(Model model, View view) {
this.model = model;
this.view = view;
}
依赖注入可用于替换工厂和解决循环依赖(guice 为此使用 "proxies")。
我在这里为我的问题创建了一个示例:
MVP-Example with interfaces
它使用 setter 和 getter,但它解释了它如何与接口一起工作。
再见:-)
我正在尝试在 Java 中实现一个 MVP 模式示例 但是我不知道Presenter和View之间的接口连接是如何工作的!有人知道这方面的一个很好的例子吗?
更多详情: 在某些来源中,class 图看起来像这样 diagram
Presenter 和 View 之间的箭头被一个球打断了。这是一个接口的符号吧?
Presenter 知道View,View 也知道Presenter,因此两者都需要相互引用。为了测试,我不想在构造函数中写 new ..();
。
如果我通过构造函数设置 View- 和 Presentor- 引用,它看起来像
这个:
CentralView myView = new CentralView(myPresenter);
CenterPresenter myPresenter = new CenterPresenter(myView);
我希望举个例子来说明它是如何工作的,在构造函数中没有 "new",可以测试并且没有 getter 和 setter。
我觉得这个最简单:
Model model = new Model();
View view = new View();
Presenter presenter = new Presenter(model, view);
view.setPresenter(presenter);
但是,如果你坚持要"no setters",你真的应该去看看依赖注入。例如,使用 guice:
// can resolve dependencies by itself
Presenter presenter = new Presenter();
// Dependency injection hard at work within your constructor
@Inject
Presenter(Model model, View view) {
this.model = model;
this.view = view;
}
依赖注入可用于替换工厂和解决循环依赖(guice 为此使用 "proxies")。
我在这里为我的问题创建了一个示例: MVP-Example with interfaces 它使用 setter 和 getter,但它解释了它如何与接口一起工作。
再见:-)