單例模式是設計模式中最簡單的形式之一。這一模式的目的是使得類的乙個物件成為系統中的唯一例項。
實現思路:為了實現該singleton2只產生乙個例項化物件,可以先將其建構函式私有化,杜絕外部new 物件,然後又該類自己提供乙個靜態的方法,產生物件供外部使用,這樣便實現了單例的基本要求.
public class singleton2
public static singleton2 getinstatnce()
return instance;
}}
如果在getinstance()方法上直接加上synchronized,大家稱呼為懶漢式,如下**,雖然解決了多執行緒的問題,但是每次呼叫該同步方法的時候,效率不是很好。
public class singleton2
public static synchronized singleton2 getinstatnce()
return instance;
}}
還有一種方式叫餓漢式,即是在類載入的時候即產生乙個靜態的instance物件,這樣也解決了問題,例如
public class singleton2
public static singleton2 getinstatnce()
}
注意,上面的instance加了final關鍵字,防止外部修改instance變數;這樣的方式基本沒什麼問題,唯一的小遺憾就是這個物件不管你用不用,在類載入的時候就new 出來了,感覺不是十分完美。相對應得還有一種叫雙重鎖的方式,個人覺得比較完美,**如下:
public class singleton
public static singleton getinstatnce()
}} return instance;
}}
具體的實現方式還要看具體的專案環境吧!
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...