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

  • 相关阅读:
    面向对象
    数据库,连接查询
    主外键,子查询
    字符串函数
    数据库。模糊查询,聚合函数,时间日期函数
    数据库。增,删,改,查
    数据库
    多窗体及菜单
    winform公共控件及其常用属性
    winform 客户端应用程序(c/s b/s)
  • 原文地址:https://www.cnblogs.com/cshaptx4869/p/10422696.html
Copyright © 2011-2022 走看看