2015-08-29 17 views
4

在Java中,如何使一個可變對象跨多個不相關的對象進行訪問,否則A)創建可變靜態字段/方法或B)傳遞相同的對象很多層,或者哪些被認爲是可維護性,可讀性等的最佳實踐?在多個不相連的對象中可以訪問可變變量

兩種情況拿出常常爲我的桌面應用程序:

在GUI用戶/會話數據。用戶在應用程序的開始處登錄,稍後我將需要JFrame中另一個面板內另一個面板內的JPanel內的JLabel中的用戶名。將我的會話數據傳遞給深層的5或6層的構造函數似乎很荒謬,但我討厭一個對象的想法,該對象將靜態變量保存在整個地方。

數據庫訪問。我有一個對象訪問數據庫,然後需要訪問數據庫的各種對象。這些類基本上是不相關的,因爲不同的原因需要數據庫,所以我求助於Databases.thisOne().query("...")

+0

選項B總是會更可取。除了您指定的選項A和B之外,我認爲除了選擇A和B之外,還沒有其他方式可以做到這一點。 –

回答

3

這個問題肯定是一個客觀的問題,這可能會引發語言/框架特徵之爭的爭論。

即將到來的實際問題,您在這裏指向的案件是有效的,該問題的計數器部分僅回答static data。你不能簡單地拒絕這樣一個事實,即靜態是唯一的方法。他們是爲了它。

Understanding Class members

有時候,你想有一個適用於所有對象的變量。這是通過靜態修改器完成的。在其聲明中具有靜態修飾符的字段稱爲靜態字段或類變量。他們與班級相關,而不是與任何對象相關聯。該類的每個實例共享一個類變量,它位於內存中的一個固定位置。任何對象都可以更改類變量的值,但也可以在不創建類的實例的情況下操作類變量。

讓我給你一個關於你提到的例子。那是session。你是否經歷過容器中會話管理的源代碼?所有的屬性和值都存儲在服務器上的​​中,以使它們可以跨實例訪問(請求,請求上下文等)。