我有两个UI组件,如下所示:
class UIPanel extends JPanel{ ... }
class MainPanel { Model m;
//instantiates UIPanel }
这里的问题是,在UIPanel类中,我想添加一个ActionListener,它将使用Model来决定如何处理用户操作。不幸的是,我决定拆分这两个类,并且无法直接访问Model。一个明显的解决方案是将UIPanel类简单地粘贴在MainPanel中,但是我在考虑是否有办法保持拆分。
最佳答案
您可以简单地为UIPanel
提供对Model
的引用:
class UIPanel {
UIPanel(Model m) {
m.addActionListener(listener);
}
}
class MainPanel {
...
MainPanel() {
...
UIPanel uiPanel = new UIPanel(m); // Constructor, a separate setter would be possible also
...
}
}
这显然是相当紧密的耦合。也许
MainPanel
根本不需要引用Model
?