摘要:单例模式总结 单例模式就是一个类仅允许实例化一次,禁用clone方法和new方法(构造器) 也就是将这两个方法给类的私有化,不允许外部访问,然后创建一个静态受保护方法,来保存类的唯一实例,然后创建一个静态的方法提供接口,该方法创建并返回当前类的唯一实例.从而保证类仅允许实例化一次, &
单例模式总结
单例模式就是一个类仅允许实例化一次,禁用clone方法和new方法(构造器)
    也就是将这两个方法给类的私有化,不允许外部访问,然后创建一个静态受保护方法,来保存类的唯一实例,然后创建一个静态的方法提供接口,该方法创建并返回当前类的唯一实例.从而保证类仅允许实例化一次,
    如下面代码
//创建一个类Once
class Once
{
    //私有化构造方法和克隆方法防止外部访问,和子类访问
    private function __construct(){}    //私有化构造器
    private function __clone(){}        //私有化clone方法
    //创建一个类的静态受保护属性
    protected $instance = null;    //保存唯一实例
    //创建对外部的静态方法,返回唯一实例
    public static function getInstance()
    {
        //如果类内部的保存唯一实例的属性是空的话,则创建唯一实例,并返回,如果有值则直接返回
        if(is_null(static::$instance)){
            static::$instance = new static();    //谁调用我,我就是谁
        }
        return static::$instance;
    }
}
//在外部测试是否只实例化了一次类
/从外部实例化Hubby类
$hubby1 = Hubby::getInsetance();    //调用静态方法接口创建实例
$hubby2 = Hubby::getInsetance();
echo ($hubby1 instanceof Hubby) ? '是' : '不是';    //是
echo '<br>';
echo ($hubby2 instanceof Hubby) ? '是' : '不是';    //是
echo '<br>';
echo ($hubby1 === $hubby2) ? '完全相等' : '不相等';    //完全相等
echo '<br>';
var_dump($hubby1,$hubby2);
						批改老师:韦小宝批改时间:2018-12-12 14:44:51		
						
老师总结:总结的没有毛病!一直写的都很不错!设计模式还是很重要的!一定要多练习!