私は現在、OOPのスキルを高めるための簡単なGUIノートパッドを開発しようとしています。 私は開発中に単一責任原則に固執します。 私は原則に従ってアプリケーションをいくつかの部分に分けました。単一の責任原則とイベントリスナー
// 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;
}
}
他のクラスもあります。 ボタン - このクラスは、メニューバーのボタンを作成するために使用されます。 MenuItemActionListeners - このクラスは、ボタンによって起動されたすべてのイベントを処理します。
単純な責任原則に従って正しい方法でアプリケーションを分割しましたか?
私もアクションリスナー、マウスリスナーなどを処理するための最良の方法
はこれまでのところ、私はすべてのイベントを処理するために、1のactionPerformed(SomeEvent電子)メソッドを使用しているを見つけるしたいと思います。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のような巨大で深刻なアプリケーションを開発する場合、どのようにイベントリスナーを記述しますか?
"アプリケーションがいくつかのことをしており、非常に複雑なGUIを使用している場合は、コンポーネントごとに別々のクラスを持つことはお勧めできません。複雑なGUIや複雑なシステムの場合は、システム全体についてあまり知らなくても、クラスを分離して相互作用するコンポーネントを作成することを強くお勧めします。 –
Ravi Bhatt、私はあなたの言うことに完全に同意し、したがって私の声明を削除しました。しかし、あなたがこれらの原則に従いたいという程度には限界があります。 – Shankar