我有7-8個可調用的類,它們使用了一些相似的功能,並且還讀了一些相同的列表和HashMap。 因此,我創建了一個靜態類,其中包含靜態函數和靜態列表以及哈希映射的所有功能。面向對象設計vs靜態類在java和併發性開發
現在,我有一些疑問:
1)它是一種錯誤的做法,以在Java靜態類作爲我的前輩罵我在使用靜態類,而讓我把它轉換成一個單例類。
但靜態類比單例更快。不是嗎?
2)它是一個不好的設計有一個參考的靜態/非靜態方法來獲得像調用方法內部列表一些數據(線程)或執行某些任務嗎?
這是否違反線程安全性或並行性,正如我的老人所說的?並要求我將線程類中的列表作爲私有成員。
但不是不好用的內存爲其他線程6-7班利用了相同的列表爲只讀。
3)如何提高OO設計與性能改善以及。
一個示例代碼應該是這樣的:
public class StaticClass {
private static List<String> ListOne;
private static List<String> listTwo;
private static HashMap<String, String> hMap;
static{
//initialize list and maps by reading from file
}
public static List<String> getListOne() {
return ListOne;
}
public static List<String> getListTwo() {
return listTwo;
}
public static HashMap<String, String> gethMap() {
return hMap;
}
public static void commonMethodOne(){
}
public static String commonMethodTwo(){
}
public static String[] commonMethodThree(){
}
}
public class CallableThread implements Callable<String>{
public String call(){
HashMap<String, String> mapTask = StaticClass.gethMap();
List<String> taskOne =StaticClass.getListOne();
for(String temp : taskOne){
//do what you are suppose to do
}
for(String key : mapTask.keySet()){
//do what you are supposed to do
}
return "Done with CallableThread";
}
}
沒有「資深」的人會推薦一個Singleton。我認爲沒有什麼好處,使這個靜態或單身。如果你有可變的共享數據,你最好注意正確的同步它。在我看來,你擔心錯誤的事情。 – duffymo