我想在使用hibernate或者mybatis時,大家都接觸過單例模式
單例模式分為兩種: 懶漢和餓漢
懶漢:使用時才去建立--看著名字就能想到
餓漢:一開始就去建立
分別上**:
懶漢:
public class singlelazy
return copy;
} private singlelazy
}
餓漢:
public class siglehungry
public static factorycopy getfactorycopy()
說說兩者區別:
懶漢在使用時候,在使用的時候才去建立,那麼在響應時間上會更長。並且執行緒不安全;
餓漢模式一開始就建立了,但是有可能在後面我們沒有使用到這個物件,如果建立的物件過於龐大的話,會造成資源的浪費,但是它是執行緒安全的;
執行緒不安全那麼問題就大了,那麼我們也可以吧懶漢模式寫成執行緒安全;
想要實現執行緒安全,其實最常用到的就是加鎖了
public class singlelazy
return copy;
}}
但是 本著減小鎖粒度的原則,我們還可以這麼寫
public class singlelazy
}} return copy;
}}
最後,還可以使用列舉來實現單例
package com.czy.designmodel;
public class useresingle
private useresingle()
public static useresingle getuseresingle()
private enum sigle
private useresingle getuseresingle()
}}
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...