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