簡體   English   中英

有關Java中OOP的一些問題

[英]Some questions about OOP in Java

我有一個帶有按鈕和文本字段菜單的GUI類。 根據菜單和輸入中的選擇,GUI類中的方法正在調用Logic類中的方法以發送輸入並創建Customer類和Account類的新對象,依此類推。

為了能夠在GUI類和Logic類之間進行通信,我首先創建Logic類的對象,然后在GUI類內部進行操作,因為在這里有我的主要方法。 這是最好的方法嗎? 我是否需要在GUI-和Logic類之間使用某種引用變量,或者僅在GUI類的開頭創建對象時使用引用? 我想能夠與一個類進行交流,它必須首先是一個對象! 謝謝!

Logic logic = new Logic(); 

logic.addCustomer(name, number);

理想情況下,您不應該直接創建邏輯類。 您應該將功能分解為多個小類,每個小類都可以履行職責。

一種簡單的方法是讓GUI類創建偵聽用戶事件的偵聽器。 作為對use事件的響應,它們會觸發您的邏輯為其注冊的事件。 然后,當接收到事件時,邏輯類可以執行功能。 您應該閱讀有關觀察者模式,事件驅動設計的信息。

您可以在http://en.wikipedia.org/wiki/Event-driven_programming上閱讀有關事件驅動程序的信息。

我建議您對MVC架構進行一些研究。 您的GUI(視圖)不應直接與模型(邏輯)進行交互。 實現一個控制器,該控制器將從您的視圖中獲取“信號”,並負責創建“邏輯對象”並與之配合使用。

我將在GUI外部實例化Logic類,但將其作為參數傳遞給GUI構造函數。 它幾乎等同於您已經在做的事情,但是我認為它使GUI使用Logic對象更加清楚。 另外,在GUI啟動/關閉之前/之后,Logic可能還會做一些其他事情; 現在可能不是這種情況,但是如果您擴展程序,將來可能會如此。

許多其他答案告訴您要查看MVC,但這可能對您的項目而言過於矯kill過正。 對於大型項目,它可以降低復雜性,而對於小型項目,則可以增加復雜性。

編輯:

Logic login = new Logic();
...
MyGUI gui = new MyGUI(logic);
...

您可以在主對象中創建Logic類型的on對象,並將該對象的引用存儲在Window對象中-這樣,只要窗口存在,就可以訪問Logic對象。

對於這種瑣碎的場景,您應該查找Singleton設計模式

默認情況下,Java使用引用變量。 因此,如果在GUI類中實例化對象,請確保通過方法調用將對象發送到處理類。

另外,您可以查看單例類,該類將僅返回該類的一個實例。 在該類中,實例化全局所需的所有對象,然后在整個程序中重新使用該實例。

通常您可以。 如果您的應用程序很簡單。

但是這種方法是不可擴展的。 隨着您的應用程序變得越來越復雜,開發和支持變得越來越困難。 嘗試考慮“ 模型-視圖-控制器”模式來定義最佳設計方式。 (根據您的昵稱,我將冒險提出其他鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM