我目前正在尝试开发一个简单的 GUI 记事本来提高我在 OOP 方面的技能。我在开发时坚持单一职责原则。我按照原则将应用程序分成了几个部分。
// This class runs the whole application
public class Notepad {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new NotepadFrame();
}
});
}
}
// This class is responsible for setting up a frame
public class NotepadFrame extends JFrame {
public NotepadFrame() {
super("Notepad");
MenuBar menuBar = new MenuBar();
setJMenuBar(menuBar.createMenuBar());
pack();
setVisible(true);
}
}
// This class sets up a menu bar
public class MenuBar {
public JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
Buttons buttons = new Buttons();
menuBar.add(buttons.createFileMenuItems());
menuBar.add(buttons.createEditMenuItems());
menuBar.add(buttons.createFormatMenuItems());
menuBar.add(buttons.createHelpMenuItems());
return menuBar;
}
}
还有其他类。Buttons - 此类用于创建菜单栏的按钮。MenuItemActionListeners - 此类处理按钮触发的所有事件。
我是否根据简单责任原则以正确的方式划分应用程序?
我还想找出处理动作侦听器、鼠标侦听器等的最佳方法。
到目前为止,我使用了一种 actionPerformed(SomeEvent e) 方法来处理所有事件。
private JButton button;
private JButton button2;
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == button) {
} else if (source == button2) {
} // etc.
}
我意识到这是处理事件监听器的坏方法。随着应用程序大小的增长,添加如此多的条件语句会使代码的可读性降低,CPU 性能也会下降。
您如何处理应用程序中的事件侦听器?在开发像 MS Office 或 AutoCAD 这样庞大而严肃的应用程序时,您将如何编写事件侦听器?