单例模式笔记

原创2018-12-20 16:08:0894
摘要:单例模式:一个类仅允许被实例化一次<?php class Doggie {         //将构造方法私有化:禁止从外部实例化类     private function __construct() {}   

单例模式:一个类仅允许被实例化一次

<?php
class Doggie
{
        //将构造方法私有化:禁止从外部实例化类
    private function __construct() {}

    //将克隆方法私有化:禁止从外部克隆该类的实例
    private function __clone() {}

    //创建内部属性$instance,用来保存当前类实例
    protected static $instance = null;

    //创建外部接口,用来返回当前类的唯一实例
    public static function getInstance()
    {
        if (is_null(static::$instance)) {
            static::$instance = new static();
        }

        return static::$instance;
    }
}

$dog1 = Doggie::getInstance();
$dog2 = Doggie::getInstance();

echo ($dog1 instanceof Doggie) ? '是' : '不是';
echo '<br>';
echo ($dog2 instanceof Doggie) ? '是' : '不是';
echo '<br>';
echo ($dog1 === $dog2) ? '完全相等' : '不相等';
echo '<br>';
var_dump($dog1, $dog2);

object(Doggie)#1 (0) { } object(Doggie)#1 (0) { }


很多时候,类应该仅被实例化一次即可,例如

1.数据库的连接对象,仅需要创建一次即可

2.用户的请求对象,URL,也仅需要创建一次即可




批改老师:天蓬老师批改时间:2018-12-20 16:38:39
老师总结:很多脚本语言,单例是通过自执行函数实现的, 当然 php中有自己的规则

发布手记

热门词条