php设计模式笔记:单例模式

时间:2020-11-30 19:40:05

php设计模式笔记:单例模式

意图:

保证一个类仅有一个实例,并且提供一个全局访问点

单例模式有三个特点:

1、一个类只有一个实例
2、它必须自行创建这个实例
3、必须自行向整个系统提供这个实例

主要实现:

Singleton定义了一个instance操作,允许外部访问它的唯一实例,instance是一个类方法,负责创建它的唯一实例。

singleton适用场景:

1、当类只能有一个实例而且外部可以从一个公共的访问点访问它。
2、当这个唯一实例应该是通过子类化可扩展的。并且用户应该无需更改代码就能使用一个扩展的实例时。

Singleton实例:

 <?php
class singleton{
//静态成品变量 保存全局实例
private static $_instance = NULL;
//私有化构造方法,防止外部访问
private function __construct(){}
//防止用户克隆
private function __clone(){}
//静态工厂方法,返回此类的唯一实例
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
}
//测试
public function test(){
echo "singleton test!";
}
} class Singletontest{
public static function main(){
$instance = singleton::getInstance();
$instance->test();
}
} Singletontest::main();
?>