php -- 设计模式 之 单例模式
实现单例的条件:三私一公
三私:私有化构造方法:不让外部创建对象
私有化克隆方法:不让外部克隆对象
私有静态属性:保存已经产生的对象
一公:公共静态方法:在类内部创建对象
实例:
<?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;
优点:
只能创建一个对象,可节省内存资源