【发布时间】:2019-05-28 04:03:23
【问题描述】:
这个问题的最佳解决方案是什么?
这是超类
public class Views<T> {
private T controller;
public Views() {
}
public Stage getStage(Node object){
return (Stage) object.getScene().getWindow();
}
public T getController(){
return controller;
}
public void setController(T controller){
this.controller = controller;
}
}
我有这个界面:
public interface UserView extends Observer{
public void setLoginObjects(Parent root);
public void loginStartUI() throws Exception;
public void setCriarUserObjects(Parent root, User user);
public void criarUserStartUI(User user) throws Exception;
}
我有这个视图子类:
public class UserViewImpl extends Views<UserController> implements UserView{
...
我有这个课程:
public class UserController {
private UserView view;
private UserDAOImpl model;
public UserController(UserView view, UserDAOImpl model) {
this.model = model;
this.view = view;
view.setController(this);
this.model.addObserver(view);
}
...
这个问题的最佳解决方案是什么?
我应该把Views 和UserView 放在一起吗? (这个解决方案的问题是我会有更多的视图,例如我有ParqueView和ParqueViewImpl,基本上和Views有相同的方法,所以会有重复的代码,我想避免这种情况)
主要问题是在我的UserController 内部我作为参数UserView 传递,它无法访问超类方法,我需要访问位于Views 类中的setController,它没有由于 MVC,将 UserView 的类型更改为 userController 中的 Views 是有意义的
【问题讨论】:
-
"这个问题的最佳解决方案是什么?" - 你从来没有解释过问题是什么(标题不够)。
-
ParqueView是否也有/需要来自UserView的方法? -
@user7 不,ParqueView 需要 Views 中的方法
-
@JacobG。抱歉,虽然问题很明显,但我还是编辑帖子吧!
-
你可以把View做成一个接口,让
UserView实现它?
标签: java interface subclass superclass