Java 中的MVC 模式和ActionListener:改進的解釋
在基於Swing 的應用程式中,MVC 模式的乾淨實現提出了問題ActionListener 所屬位置。
Controller-View互動
在MVC中,視圖不應該直接與模型通訊。相反,它應該通知控制器任何用戶操作。然後控制器可以採取適當的操作並相應地更新模型。
MVC 中的ActionListener
1.在視圖中管理ActionListener:
如前所述,將ActionListenerener 保留在視圖中是一個好主意,因為它保持了清晰的關注點分離。視圖將負責監聽使用者操作並通知控制器。
2.從ActionListener 呼叫控制器方法:
如果您的ActionListener 類別不是Controller 的直接子類,您仍然可以透過在ActionListener 中建立Controller 類別的實例來存取控制器方法。例如:
class MyActionListener implements ActionListener { private Controller controller = new Controller(); @Override public void actionPerformed(ActionEvent e) { controller.handleEvent(e); } }
直接監聽器管理的替代方案
除了上述方法之外,您還可以考慮其他替代方案:
1.專用視圖監聽器接口:
為視圖定義一個監聽器接口,描述它可以產生的操作。然後,控制器將訂閱此接口,視圖將呼叫適當的偵聽器方法。
2.模型或控制器中的屬性變更支援:
在模型或控制器中實作 PropertyChangeSupport。然後,視圖中的 ActionListener 將註冊為 PropertyChangeListener,並偵聽由使用者操作引起的屬性變更。
單獨的操作處理程序類別:
建立擴展 ActionListener 的單獨的操作處理程序類別。這些處理程序將根據需要處理特定操作並呼叫控制器方法。
正確監聽器管理的好處
範例
考慮一個簡單的「登入」視圖,其中包含兩個文字欄位(使用者名稱和密碼)和一個「登入」按鈕。按鈕的偵聽器將通知控制器使用者想要登入。然後控制器將根據資料來源檢查憑證並相應地更新視圖。
遵循這些指南,您可以有效地實作 MVC 模式並在 Java 應用程式中管理 ActionListener。
以上是ActionListener 應該駐留在 Java Swing MVC 應用程式中的什麼位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!