• 单例模式(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的值是一样的,做到了全局唯一。

    你优秀了,自然有对的人与你并肩,错的人迟早走散,而相爱的终将再相逢。
  • 相关阅读:
    二叉树的存储结构
    面试Java需要的知识总结
    EJB总结
    WEB 容器、WEB服务和应用服务器的区别与联系
    Linux安装JBOSS
    JBOSS和WebLogic区别
    深入浅出JMS(一)--JMS基本概念
    Java缓冲流细节
    xor和路径(codevs 2412)
    外星千足虫(bzoj 1923)
  • 原文地址:https://www.cnblogs.com/szrhsd/p/15266193.html
Copyright © 2020-2023  润新知