有没有更好的方法将许多参数传递给控制器​​的构造函数,并避免过多的参数或初始化

时间:2018-01-29 02:39:50

标签: java swing model-view-controller

我在其中的一个答案中读到了 Java Swing 并非完全采用 MVC 模式。我也是使用 MVC 模式的新手,我在 Java Swing 中编码。我试图找到一种解决方案或方法,以尽量减少" this"初始化期间的关键字或将值分配给字段。

例如,说我有ff。 JPanel有许多JComponents

//View
public class MyPanel extends JPanel{
private final JTextField1 jtf1;
private final JTextField2 jtf2;
....
..
private final JTextField30 jtf30;

    private void initControllers(){
        jtf1.addActionListener(new MyActionListener(jtf1,jtf2......jtf30));
    }

}

//Controller
public class MyActionListener implmements ActionListener{

private final JTextField1 jtf1;
private final JTextField2 jtf2;
....
..
private final JTextField30 jtf30;

    public MyActionListener(JTextField1 jtf1,JTextField2 jtf2,..JTextField30 jtf30){
        this.jtf1 = jtf1;
        this.jtf2 = jtf2;
        ........
        this.jtf30 = jtf30; //Does this mean I have to have 30 of "this" assignment?
    }
}

或者我想如果我通过整个JPanel视图 MyPanel 并生成getters(),可能是正确还是更好?

像这样:

public class MyActionListener implmements ActionListener{

private final JTextField1 jtf1;
private final JTextField2 jtf2;
....
..
private final JTextField30 jtf30;

    public MyActionListener(JPanel myPanel){
        this.jtf1 = myPanel.getJtf1;
        this.jtf2 = myPanel.getJtf2;
        ........
        this.jtf30 = myPanel.getJtf3; 
    }
}

解决需要参考的数十个视图组件的常见做法是什么? 你能就如何解决这个问题提出建议吗?我认为对构造函数有太多参数是不合适的。我想清理代码。

从我如何理解我读到的关于MVC的内容是,控制器类可以接受模型查看作为constructor中的参数,如同< / p>

public class MyController implements xListener{
private final Model model;
private final View view; 

    public MyController(Model m, View v){
       this.model = m; //to access getters or setters
       this.view = v; // to access getters or setters
    }
}

MyController依赖于Model mView v,如果这是正确的。

我很感激任何建议

感谢。

0 个答案:

没有答案