我想知道这是否不好;让视图了解控制器,这样它就可以委托视图中发生的操作等等,并且让控制器知道视图(这显然是正确的),但是这是双向关系,我想知道是否正确?我希望引用视图中的控制器,因为我希望将所有工作委托给控制器,并保持视图干净。
这是不是很糟糕的设计,如果是这样的话,我还能做什么不同的事情来实现同样的目标?
控制器:
public class Controller {
private View view;
public Controller() {
view = new View(this);
}
public void doSomeButtonAction() {
// More code...
}
}视图:
public class View implements ActionListener {
private Controller controller;
private Button button;
public View(Controller controller) {
this.controller = controller;
// Code for initializing button reference etc.
}
@Override
public void actionPerformed(ActionEvent event) {
controller.doSomeButtonAction();
}
}发布于 2013-02-28 21:03:48
分配特定按钮执行的功能是视图级别的问题。控制器负责提供如何操作,但它不会向上告诉视图它的按钮应该做什么。视图可以“知道”“这是一个调用保存操作的按钮”。视图的全部目的是将人工输入转换为软件操作!
如果您想要可重用的组件,您当然可以在其中添加另一个抽象层,但是分配按钮执行什么操作的代码在概念上仍然是“视图”的一部分,不管您将其粘贴在哪里。
https://stackoverflow.com/questions/15143146
复制相似问题