設計模式 單例模式

2021-08-30 17:46:39 字數 1381 閱讀 2961

確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。

單例模式分為餓漢模式懶漢模式

/**

* 餓漢模式(靜態常量),即在類載入的時候就例項化

*/public class singletonpattern

public static singletonpattern getinstance()

}

這種寫法就是餓漢模式,在類載入的時候就進行單例物件的例項化,避免了同步問題。不過有一點不好的是,如果該單例物件沒有被使用的話,就會造成記憶體浪費。

/**

* 餓漢模式(靜態**塊),即在類載入的時候就例項化

*/public class singletonpattern2

private singletonpattern2()

public static singletonpattern2 getinstance()

}

這個寫法和上面大同小異,只不過是把單例物件的例項化放在靜態**段中,同樣,這也是執行緒安全的。

/**

* 懶漢模式(同步方法)

*/public class singletonpattern3

public static synchronized singletonpattern3 getinstance()

return instance;

}}

這種寫法就是通過同步方法實現的懶漢模式,雖然避免了同步問題,但是由於在方法上加了同步關鍵字,故效率會不理想。

/**

* 雙重檢查

*/public class singletonpattern4

public static singletonpattern4 getinstance() }}

return instance;

}}

這種寫法使用了雙重檢查的思想,單例物件instance要宣告為volatile,這樣在第二次檢查instance是否為null的時候就能起到同步作用,所以該寫法是執行緒安全的。

/**

* 靜態內部類方式

*/public class singletonpattern5

private static class singletoninstance

public static singletonpattern5 getinstance()

}

這種寫法利用了jvm載入類機制的特點來保證單例物件只例項化一次,因為jvm在載入類和初始化的時候只有乙個執行緒,這樣就保證了執行緒安全。

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...