單例模式:程式在執行期間只能有乙個例項物件。
第一中實現方式:飢漢模式
在類進行初始化的時候 就載入了singleton 物件,這是會占用記憶體。
package第二種實現方式:懶漢模式com.zpj.designmode.singleton;
/***
@author
perkins zhu
* @date:2023年8月29日 下午7:53:29
* @version
:1.1
* */public
class
singleton ;
//提供靜態public方法,供外部取得單例物件
public
static
singleton getinstance()
}
在進行呼叫時對singleton進行例項化,這時如果多個執行緒同時呼叫getinstance(),這時執行緒存在安全問題。
為了解決這個問題可以對getinstance()進行加鎖同步,如getinstance02()。
package但這樣又會造成訪問速度過慢,那使用「雙重檢查加鎖」方式實現,com.zpj.designmode.singleton;
/***
@author
perkins zhu
* @date:2023年8月29日 下午7:53:29
* @version
:1.1
* */public
class
singleton ;
//提供靜態public方法,供外部取得單例物件
public
static
singleton getinstance()
return
singleton;
}//對該方法加鎖處理進行同步,但是會降低訪問效率
public
static
synchronized
singleton getinstance02()
return
singleton;}}
第三種實現方式:雙重檢查加鎖
package第四種:靜態內部類實現單例com.zpj.designmode.singleton;
/***
@author
perkins zhu
* @date:2023年8月29日 下午7:53:29
* @version
:1.1
* */public
class
singleton ;
//雙重加鎖機制,僅僅在第一次建立例項的時候同步
public
static
singleton getinstance03() }}
return
singleton;}}
package第五種:利用列舉特性實現單例com.zpj.designmode.singleton;
/***
@author
perkins zhu
* @date:2023年8月29日 下午7:53:29
* @version
:1.1
* */public
class
singleton
//私有化構造器,阻止外部進行例項化物件
private
singleton() ;
public
static
singleton getinstance()
}
package在開發過程中需要採用哪種方式要根據具體情況來確定。例如不會發生多執行緒同時操作的情況使用懶漢模式就可以。com.zpj.designmode.singleton;
/***
@author
perkins zhu
* @date:2023年8月29日 下午7:53:29
* @version
:1.1
* */public
enum
singleton
}
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...