zoukankan      html  css  js  c++  java
  • 单例模式(Singleton Pattern)

    使用场景:

    • 1、要求生产唯一序列号。
    • 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
    • 3、I/O 与数据库的连接,频繁地创建与销毁。

    实现:

    Singleton.php

    <?php
    
    
    class Singleton
    {
        private static $obj;
        private $str = '默认数据';
    
        private function __construct()
        {
            // 构造方法私有化,外部不能直接实例化这个类
        }
    
        /**
         * 判断对象,使对象全局唯一
         * @return Singleton
         */
        public static function call()
        {
            if (self::$obj == null) {
                self::$obj = new Singleton();
            }
            return self::$obj;
        }
    
        /**
         * 修改数据
         */
        public function setStr(){
            $this->str = '修改数据';
        }
    
        /**
         * 获取数据
         * @return string
         */
        public function getStr()
        {
            return $this->str;
        }
    }

    最主要的就是call方法,判断使对象唯一并实例化用静态变量保存。

    调用:

    $demo1 = Singleton::call();
    echo $demo1->getStr();
    echo "
    ";
    $demo2 = Singleton::call();
    echo $demo2->getStr();
    echo "
    ";
    $demo1->setStr();
    echo $demo1->getStr();
    echo "
    ";
    echo $demo2->getStr();

     可以看出,demo1和demo2的值是一样的,做到了全局唯一。

    你优秀了,自然有对的人与你并肩,错的人迟早走散,而相爱的终将再相逢。
  • 相关阅读:
    CF1354D
    Keiichi Tsuchiya the Drift King
    二分查找[搬运链接]
    树状数组的修炼 疑惑篇
    离线
    关于二维差分和二维前缀和的注意事项
    QWORD PTR [rcx],0x0 ??
    字典树
    数据库题
    需要掌握的技能汇总
  • 原文地址:https://www.cnblogs.com/szrhsd/p/15266193.html
Copyright © 2011-2022 走看看