zoukankan      html  css  js  c++  java
  • 单例模式

    应用场景:

    数据库连接这种比较耗费资源的操作;
    我们希望整个应用只实例化一个;

    结构:

    4私1公;

    私有化静态属性: 防止直接访问存储实例的属性
    私有化构造方法: 防止使用 new 创建多个实例;
    私有化克隆方法: 防止 clone 多个实例;
    私有化重建方法: 防止反序列化
    公有化方法:提供入口获取实例

    <?php
    
    class Mysql 
    {
        // 存放实例
        private static $instance = null;
    
        public static function getInstance()
        {
            if (self::$instance === null) {
                self::$instance = new self();
            }
    
            return self::$instance;
        }
    
        /**
         * 防止 new 创建多个实例
         * 报致命错误
         */
        private function __construct()
        {
    
        }
    
        /**
         * 防止 clone 多个实例
         * 报致命错误
         */
        private function __clone()
        {
    
        }
    
        /**
         * 防止反序列化 生成新的实例
         * 报警告错误,但还是生成了新的实例
         *  Warning:  Invalid callback Mysql::__wakeup, cannot access private method Mysql::__wakeup()
         */
        private function __wakeup()
        {
    
        }
    
    }

    参考文档:https://baijunyao.com/article/159

  • 相关阅读:
    codevs1127
    codevs1041
    C#预处理指令
    C#基本语句与C++区别
    iOS.TextKit.01.凸版印刷效果
    iOS.常用设计模式.02.委托模式
    iOS.常用设计模式.01.单例模式
    iOS.iPad.03.UIModal
    iOS.iPad.02.UIPopoverViewController
    iOS.iPad.01.UISplitViewController
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/10422696.html
Copyright © 2011-2022 走看看