題目:設計乙個類,我們只能生成該類的乙個例項。
只能生成乙個例項的類是實現singleton(單例)模式的型別。由於設計模式在物件導向程式設計中起著舉足輕重的作用,面試中經常會出現這樣的面試題。
不好得解決方法一:只適用於單執行緒環境
public sealed class singleton
private static singleton instance = null;
public static singleton instance
}}
不好的解法二:雖然在多執行緒環境中能工作但是工作效率不高
public sealed class singleton
private static readonly object syncobj = new object();
private static singleton instance = null;
public static singleton instance
return instance;
} }}
可行的解法:加同步鎖前後兩次判斷例項是否已存在
public sealed class singleton
private static readonly object syncobj = new object();
private static singleton instance = null;
public static singleton instance
} return instance;
}}
public sealed class singleton
private static singleton instance = new singleton();
public static singleton instance
}}
public sealed class singleton
public static singleton instance
} class nested
insternal static readonly singleton instance = new singleton();
}}
請閱讀這篇部落格。博主詳細講解了23種設計模式。
面試題2 實現Singleton模式
題目 設計乙個類,我們只能生成該類的乙個例項 考察點 單例模式 知識點 主要介紹兩種 懶漢式 餓漢式單例。單例模式有以下特點 1.單例類只能有乙個例項。2.單例類必須自己建立自己的唯一例項。3.單例類必須給所有其他物件提供這一例項。單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例...
面試題2 實現Singleton模式
實現singleton模式 要求熟練掌握 單例模式的要求 類在記憶體中只能有乙個例項 1.該物件不能是全域性物件或者棧物件 2.該物件是乙個堆物件 靜態成員函式與普通成員函式的區別 單例模式的實現步驟 1.將建構函式私有化 2.在類中定義乙個靜態的指標物件,並在類外初始化為空 3.定義乙個返回值為類...
面試題2 實現Singleton模式
題目描述 設計乙個類,我們只能生成該類的乙個例項。解決方案 1.只適用於單執行緒環境 單執行緒環境下可以正常工作。但是在多執行緒環境下,如果兩個執行緒同時判斷到instance為null,那麼這兩個執行緒都會建立乙個例項,此時的singleton就不滿足單例模式的要求了。1 public seale...