单例模式总结

原创2018-12-12 14:39:0683
摘要:单例模式总结    单例模式就是一个类仅允许实例化一次,禁用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
老师总结:总结的没有毛病!一直写的都很不错!设计模式还是很重要的!一定要多练习!

发布手记

热门词条