1. 程式人生 > >細解單例模式

細解單例模式

一.單例模式(典型的三私一公)

單例模式(即該類只能例項化一次)

1.例項化類時,會自動呼叫類的構造方法,因為將構造方法設定為private屬性,限制為只能在類內部例項化

 private function __construct(){}

2.定義一個靜態方法,在類內部例項化物件。例項化前先判斷該類是否已被例項化了,若已被例項化,就返回該例項化物件;若沒被例項化,便例項化一個物件並將該物件儲存在類的靜態屬性中

private static res=null;

public static function create(){

  if(self::$res ===null){

        self::$res=new self();

  }

return self::$res;

}

3.禁止克隆,物件之間進行克隆可生成不同的物件。而克隆時會自動呼叫類的__conle方法,因此將克隆方法設定為private屬性

private function __clone(){}

總結如下:

class Mysql {

 private static $self = null;

 public static function create(){
  if (self::$self === null) {
   self::$self = new self();
  }
   return self::$self;
 }
 private function __construct(){
 }
 private function __clone(){
 }
}

二.