我正在使用java構建客戶端服務器應用程序(使用NetBeans).. 在客戶端,我有3個類和一個Connection
類來處理從/到服務器的數據發送和接收。這3個類使用相同的Connection類,所以我認爲創建一個全局連接將會很有用,每次需要發送/接收數據時,這些連接將被不同的類使用。java中的客戶端服務器
所以從C#和C++我知道你可以聲明一個靜態類,但在Java中是不可能宣佈靜態類..任何想法?
我正在使用java構建客戶端服務器應用程序(使用NetBeans).. 在客戶端,我有3個類和一個Connection
類來處理從/到服務器的數據發送和接收。這3個類使用相同的Connection類,所以我認爲創建一個全局連接將會很有用,每次需要發送/接收數據時,這些連接將被不同的類使用。java中的客戶端服務器
所以從C#和C++我知道你可以聲明一個靜態類,但在Java中是不可能宣佈靜態類..任何想法?
引入全局狀態往往是被認爲是不好的做法,但它肯定有它的用例。所以,你可能想考慮單身模式。 Wikipedia on Singleton
在java中,一個簡單的實現看起來是這樣的(未測試的代碼):
public class MyConnectionClass {
private static final MyConnectionClass SINGLE_INSTANCE = new MyConnectionClass();
private MyConnectionClass() {}
public static MyConnectionClass getInstance() {
return SINGLE_INSTANCE;
}
}
然後你就可以得到只要你需要它使用
MyConnectionClass.getInstance()
單個實例請請注意,該類有一個私有構造函數。這可以確保,你不能使用
MyConnectionClass not_singleton_anymore = new MyConnectionClass()
也可以使用枚舉,其中有些人認爲在Java中實現單例模式的最佳方法。 從維基百科複製的示例:
public enum Singleton {
INSTANCE;
public void execute (String arg) {
//... perform operation here ...
}
}
希望對您有所幫助。
Java中的類的靜態修飾符是隱含的:如果Java中的類中的所有內容都是靜態的,那麼我認爲可以說它是靜態類。
實際上,即使Java確實有靜態類修飾符,其行爲也不同於在每個元素之前放置靜態。
只需用static
修改所有內容,你就會好的。如果你這樣選擇,添加一個私人的構造函數,以便它不能被實例化。
好的,謝謝你 – Elior 2013-04-25 21:36:40
我無線本地環路建議ü做一個實例,並通過它在埃夫裏其他類的構造函數..所以ü無線本地環路有每個類別的相同的實例。它是無線本地環路的組成關係
這不是一個很乾淨的解決方案。它需要每個方法調用處理服務器/客戶端的額外參數。 – Zyerah 2013-04-25 21:38:40
非常感謝!我想過這個實現也:) – Elior 2013-04-25 21:51:20
不客氣。並感謝您的快速接受;-) – 2013-04-25 22:05:03
不客氣..我只是不太確定singelton ..所以我問這個問題..謝謝無論如何:) – Elior 2013-04-25 22:44:17