使用isEnabled方法創建一個單體的良好接口的任何想法?Java Singleton - IsEnabled?
例如,我有一個UDPClient,只想創建一次Socket,所以我將它設置爲單例。我希望應用程序繼續,如果配置說啓用它,但它不能。
我可以做得比這個客戶端代碼和單身實現更好嗎? (並請糾正我,如果我搞砸了單身人士)。如果它有任何不同,這將用於Web應用程序。
public class UDPConnectionManager {
private static final UDPConnectionManager INSTANCE = new UDPConnectionManager();
private UDPClient udp = null;
private UDPConnectionManager() {
try {
InitialContext ic = new InitialContext();
String udpHost = (String) ic.lookup("java:comp/env/udpHost");
Integer udpPort = (Integer) ic.lookup("java:comp/env/udpPort");
Boolean udpEnabled = (Boolean) ic.lookup("java:comp/env/udpEnabled");
if (udpEnabled) {
udp = new UDPClient(udpHost, udpPort);
}
} catch (Exception e) {
log.error("UDP Connection Manager: error while setting up UDP Manager.", e);
}
}
public static UDPConnectionManager instance() {
return INSTANCE;
}
public UDPClient getUDPClient() {
return udp;
}
public Boolean isEnabled() {
return (udp != null);
}
}
客戶:
UDPClient udpCM = UDPConnectionManager.instance();
if (udpCM.isEnabled()) {
UDPClient udpClient = udpcCM.getUDPClient();
udpClient.send("test");
}
我喜歡這一點,所以我upvoted它。問題是我沒有提及還有其他5種方法,類似於發送,我需要做如果不是null測試。 5種方法也不錯。我不得不在晚上想想這個。感謝您的洞察力。 –