我一直在搜索,但似乎找不到解决方法。我有两个视图,一个控制器,一个模型,以及一个Factory类。但是,该模型在此问题中并不重要。
我希望能够根据用户的选择为两个类使用相同的变量名。例如:
public class Controller {
public Controller(){
m = new Model();
}
//This method is called from Factory
/*Only one of these two will be called SetViewSwing() or SetViewKonsoll()*/
public void SetViewSwing(){
v = new View(this);
}
public void SetViewKonsoll(){
v = new ViewKonsoll(this);
}
}
然后在控制器类中进一步做类似的事情:
v.updateGui(String text);
因此,根据是调用SetViewSwing
还是调用SetViewKonsoll
,我想将类分配给v,然后可以在以后的控制器类中使用它来执行{{1 }}用户选择了
答案 0 :(得分:0)
我不知道你要做什么。但是根据您的问题,您想从控制器访问相同的视图变量,因此您需要遵循这一点。您需要一个接口。
声明一个通用接口
public interface CommonView {
void updateGui(String text);
}
然后,您必须为两个具体的视图类实现此接口
public class View implements CommonView {
public View(ViewController viewController) {
}
@Override
public void updateGui(String text) {
System.out.println("Swing View");
}
}
和另一个班
public class ViewKonsoll implements CommonView {
public ViewKonsoll(ViewController viewController) {
}
@Override
public void updateGui(String text) {
System.out.println("KonsolView");
}
}
然后在Controller上您可以这样定义
public class ViewController {
Model m;
CommonView v;
ViewController(){
m = new Model();
}
public void SetViewSwing(){
v = new View(this);
}
public void SetViewKonsoll(){
v = new ViewKonsoll(this);
}
}
然后,您可以从控制器或任何地方设置视图,然后调用v.updateGui(String text)
。