美文网首页
单例模式

单例模式

作者: 最底层的技术渣 | 来源:发表于2020-01-29 23:01 被阅读0次

    概念

    单例模式:singleton,是一种类的设计只会最多产生一个对象的设计思想

    • 单例模式的类只能在一次运行中产生一个对象
    • 单例模式为了解决如何只产生一个对象,需要使用以下解决方案,简称三私一公
    • 私有化构造方法:不让在外部产生多个对象
    • 私有化克隆方法:不允许对象被克隆产生新对象
    • 公有化静态方法:运行进入类内部产生对象
    • 私有化静态属性:保存已经产生的对象
    栗子
    <?php
    
    class Singleton
    {
        /**
         * 增加静态属性:私有,不允许外部修改,否则外部修改之后就没有意义了
         * @var null
         */
        private static $object = null;
    
        /**
         * 禁止在类外部实例化对象
         * Singleton constructor.
         */
        private function __construct()
        {
    
        }
    
        /**
         * @return Singleton|null
         */
        public static function getInstance()
        {
            //判断内部属性是否存在对象(is_object函数):最好的判定是存的对象是当前类的 instanceof
            if (!(self::$object instanceof self)) {
                //当前保存的内容不是当前类的对象
                self::$object = new self();
            }
            //返回对象给外部
            return self::$object;
        }
    
        /**
         * 在Singleton类中增加私有化的__clone()方法
         * 禁止对象的克隆,即在类内部私有化克隆方法
         */
        private function __clone()
        {
        }
    }
    
    $obj1 = Singleton::getInstance();
    $obj2 = Singleton::getInstance();
    var_dump($obj2, $obj1);
    

    相关文章

      网友评论

          本文标题:单例模式

          本文链接:https://www.haomeiwen.com/subject/olvbthtx.html