php--設計モードの単例モード
4921 ワード
単例を実現する条件:三私一公
三私:私有化構築方法:外部にオブジェクトを作成させない
プライベートクローン方法:外部クローンオブジェクトを使用しない
≪プライベート・静的プロパティ|Private Static Properties|oem_src≫:生成されたオブジェクトを保存します.
共通:共通の静的メソッド:クラス内にオブジェクトを作成する
例:
メリット:
メモリリソースを節約できるオブジェクトは1つしか作成できません
三私:私有化構築方法:外部にオブジェクトを作成させない
プライベートクローン方法:外部クローンオブジェクトを使用しない
≪プライベート・静的プロパティ|Private Static Properties|oem_src≫:生成されたオブジェクトを保存します.
共通:共通の静的メソッド:クラス内にオブジェクトを作成する
例:
<?php
// :
class Single{
//
private $name;
public static $counts = 0;
//
private static $single;
//
private function __construct($name){
$this->name = $name;
//
self::$counts++;
}
//
private function __clone(){
//
self::$counts++;
}
// ,
public static function getInstance($name){
// , ,
if(self::$single){
// ,
}else{
//
self::$single = new Single($name);
}
//
return self::$single;
}
}
//
//$single = new Single(' ');
//
//echo Single::$counts;
//
$single = Single::getInstance(' ');
var_dump($single);
//
echo Single::$counts;
//
$single = Single::getInstance(' ');
var_dump($single);
//
echo Single::$counts;
メリット:
メモリリソースを節約できるオブジェクトは1つしか作成できません