我有一個名爲AbstractServer
的包 - 私有接口,它提供了三種方法:start()
,stop()
和init()
。每個接口的唯一標識符 - 實現
對於每個新服務器,我都實現了接口並覆蓋了這些方法。之後,我將這臺新服務器註冊到我的公共ServerManager
-class,該服務器收集HashMap
中的所有服務器,並以特定順序調用其公開的方法。
因此,所有已註冊的服務器從其他地方出發的代碼只是看起來是這樣的:
ServerManager.INSTANCE.startServers();
我目前所面臨的問題,我希望能夠從ServerManager
刪除服務器s地圖。
我的想法是向接口引入一個public static final String IDENTIFIER
字段,並將其用作HashMap
中的鍵。這樣,除去從ServerManager
服務器,我會寫:
ServerManager.INSTANCE.removeServer(HttpServer.IDENTIFIER);
的問題是,我不能在界面中的「抽象」屬性,因此不能強制實現重寫它。
我也不能使用普通方法(非靜態),因爲服務器實現的構造函數將是包私有的。
作爲替代,我想過使用實現的Class
作爲HashMap
的鑰匙,所以我可以寫的東西是這樣的:
ServerManager.INSTANCE.removeServer(HttpServer.class);
對這個有什麼想法?
使用該類作爲關鍵是一個不錯的選擇。 – Marcelo 2012-01-27 14:40:59
你目前使用什麼作爲你的Map中的鍵,並且可以有多個特定服務器的實例? – quaylar 2012-01-27 14:44:41
@quaylar我正在使用一個字符串,但它不存儲在任何地方,所以你必須知道確切的價值。感覺像蝙蝠練習給我。 – 2012-01-27 15:02:52