第一種最簡單,但沒有考慮線程安全,在多線程時可能會出問題,不過俺從沒看過出錯的現象,表鄙視我……
publicclassSingleton{PRivatestaticSingleton_instance=null;privateSingleton(){}publicstaticSingletonCreateInstance(){if(_instance==null)
{_instance=newSingleton();}return_instance;}}
第二種考慮了線程安全,不過有點煩,但絕對是正規寫法,經典的一叉
publicclassSingleton{privatevolatilestaticSingleton_instance=null;privatestaticreadonlyobjectlockHelper=newobject();privateSingleton(){}publicstaticSingletonCreateInstance(){if(_instance==null){lock(lockHelper){if(_instance==null)_instance=newSingleton();}}return_instance;}}第三種可能是C#這樣的高級語言特有的,實在懶得出奇
publicclassSingleton{
privateSingleton(){}publicstaticreadonlySingletoninstance=newSingleton();}哦,shit!
新聞熱點
疑難解答