是修改BaseDlg类:
public abstract class BaseDlg extends JDialog {
public BaseDlg(Frame frame, String title) {
super(frame, title, true);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(createHeadPanel(), BorderLayout.NORTH);
this.getContentPane().add(createButtonPanel(), BorderLayout.SOUTH);
}
/** 创建对话框实例后,必须调用此方法来布局用户界面
*/
public void initGUI() {
this.getContentPane().add(createClientPanel(), BorderLayout.CENTER);
}
private JPanel createHeadPanel() {
... // 创建对话框头部
}
// 创建对话框客户区域,交给子类实现
protected abstract JPanel createClientPanel();
private JPanel createButtonPanel {
... // 创建按钮区域
}
}
新的BaseDlg类增加了一个initGUI()方法,程序员可以这样使用这个类:
ChildDlg dlg = new ChildDlg();
dlg.initGUI();
dlg.setVisible(true);
总结
类的构造方法的基本目的是正确初始化类变量,不要赋予它过多的职责。
设计类构造方法的基本规则是:用尽可能简单的方法使对象进入就绪状态;如果可能,避免调用任何方法。在构造方法内唯一能安全调用的是基类中具有final属性的方法或者private方法(private方法会被编译器自动设置final属性)。final的方法因为不能被子类覆盖,所以不会产生问题。 |