MVC - 两个 类 在 Controller 中具有相同的引用
MVC - Two classes with same reference in Controller
我一直在搜索,但似乎找不到解决方案。我有两个视图,一个控制器,一个模型和一个工厂 class。但是模型在这个问题中并不重要。
我希望能够根据用户的选择对两个 class 使用相同的变量名。例如:
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);
}
}
然后在控制器中进一步往下 class 我可以做类似的事情:
v.updateGui(String text);
因此,取决于是调用 SetViewSwing
还是调用 SetViewKonsoll
我想将 class 分配给 v,稍后我可以在我的控制器中使用它 class 执行 viewclass
用户选择
中的方法
我不知道你要做什么。但是根据你的问题,你想从控制器访问相同的视图变量,所以你需要遵循这个。为此你需要一个接口。
声明一个公共接口
public interface CommonView {
void updateGui(String text);
}
然后你必须为具体视图实现这个接口classes
public class View implements CommonView {
public View(ViewController viewController) {
}
@Override
public void updateGui(String text) {
System.out.println("Swing View");
}
}
还有一个class
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)
。
我一直在搜索,但似乎找不到解决方案。我有两个视图,一个控制器,一个模型和一个工厂 class。但是模型在这个问题中并不重要。
我希望能够根据用户的选择对两个 class 使用相同的变量名。例如:
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);
}
}
然后在控制器中进一步往下 class 我可以做类似的事情:
v.updateGui(String text);
因此,取决于是调用 SetViewSwing
还是调用 SetViewKonsoll
我想将 class 分配给 v,稍后我可以在我的控制器中使用它 class 执行 viewclass
用户选择
我不知道你要做什么。但是根据你的问题,你想从控制器访问相同的视图变量,所以你需要遵循这个。为此你需要一个接口。
声明一个公共接口
public interface CommonView {
void updateGui(String text);
}
然后你必须为具体视图实现这个接口classes
public class View implements CommonView {
public View(ViewController viewController) {
}
@Override
public void updateGui(String text) {
System.out.println("Swing View");
}
}
还有一个class
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)
。