ActionListener 應該放在 Java MVC 架構中的什麼位置?
Nov 30, 2024 pm 06:19 PMJava中的MVC架構和ActionListener的放置
在MVC(模型-視圖-控制器)架構中,ActionListener的放置應該遵循保持關注點分離的具體準則。
放置ActionListeners
從技術上講,ActionListeners 屬於控制器層,因為它們處理使用者輸入並與模型互動。然而,Java 中廣泛使用的 GUI 框架 Swing 並未嚴格遵循 MVC 模式。為了可讀性和可維護性,通常將 ActionListener 放置在 View 或 Controller 類別之外的單獨套件中,但它們仍然應該由 Controller 管理。
Controller 和ActionListener 之間的通信
從非控制器的ActionListener 中執行控制器函數子類:
- 創建一個介面或抽象類,定義Controller期望的回呼方法。
- 在包含ActionListener的類別中實作此介面。
- 透過初始化時控制器的已實作介面的實例。
- 然後控制器可以訂閱該介面並在以下情況下呼叫回調方法:
範例:
// Interface for the View to notify the Controller of events public interface LoginViewListener { public void onLoginRequested(); public void onLoginCancelled(); } // Class containing the ActionListener public class LoginPane extends JPanel implements LoginView { private LoginViewListener listener; // ... public void setLoginViewListener(LoginViewListener listener) { this.listener = listener; } // ... @Override public void onLoginRequested() { if (listener != null) { listener.onLoginRequested(); } } } // Controller class public class LoginController implements LoginViewListener { private LoginPane loginPane; // ... public LoginController() { loginPane = new LoginPane(); loginPane.setLoginViewListener(this); } @Override public void onLoginRequested() { // Perform login operations // ... } // ... }
登入後複製
這種情況方法允許實現解耦且靈活的設計,其中視圖和控制器透過介面進行交互,從而提高可維護性和程式碼可重用性。
以上是ActionListener 應該放在 Java MVC 架構中的什麼位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

2025年的前4個JavaScript框架:React,Angular,Vue,Svelte

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復
