• 第一章:独孤九剑 - 单例模式

    第一章:独孤九剑 - 单例模式

    武林秘籍

    在编程江湖中,有一门绝世武功名为"独孤九剑",讲究"无招胜有招",天下武功唯快不破。

    而在设计模式中,有一门与之对应的绝学——单例模式

    何为单例?

    单例模式,顾名思义,就是只有一个实例。就像武林中独一无二的绝世高手,世间仅此一人。

    武功心法

    <?php
    /**
     * 独孤九剑 - 单例模式
     * 世间仅此一例,别无分号
     */
    class DuguQiuBai {
        // 静态实例,保存唯一的单例对象
        private static $instance = null;
        
        // 私有构造函数,防止外部通过 new 创建实例
        private function __construct() {
            echo "独孤求败创建成功!\n";
        }
        
        // 静态方法获取单例实例
        public static function getInstance() {
            if (self::$instance === null) {
                self::$instance = new self();
            }
            return self::$instance;
        }
        
        // 独孤九剑剑法
        public function swordStyle() {
            return "无招胜有招,天下武功唯快不破!";
        }
        
        // 防止克隆
        private function __clone() {
            // 禁止克隆
        }
        
        // 防止反序列化
        public function __wakeup() {
            // 禁止反序列化
        }
    }
    
    // 使用示例
    echo "=== 独孤九剑 - 单例模式示例 ===\n";
    
    // 获取单例实例
    $hero1 = DuguQiuBai::getInstance();
    $hero2 = DuguQiuBai::getInstance();
    
    // 验证是否为同一实例
    if ($hero1 === $hero2) {
        echo "✅ 两个变量指向同一个实例(单例模式验证成功)\n";
    } else {
        echo "❌ 两个变量指向不同实例(单例模式验证失败)\n";
    }
    
    // 使用剑法
    echo "剑法展示:{$hero1->swordStyle()}\n";
    ?>
    

    江湖应用

    1. 数据库连接 - 就像武林盟主,全局唯一
    2. 配置管理 - 如同武林秘籍,全派共享
    3. 日志记录 - 如同武林史官,记录江湖大事

    独孤九剑要诀

    • 无招胜有招:单例模式看似简单,却蕴含大道至简的哲理
    • 天下武功唯快不破:单例模式避免重复创建,提升性能
    • 独孤求败:世间仅此一例,别无分号

    修炼要点

    1. 线程安全:多线程环境下确保单例唯一性
    2. 延迟加载:按需创建,避免资源浪费
    3. 防止反射:防止通过反射机制创建新实例

    下回预告:第二章:造化功 - 工厂模式

    本文章由设计模式武侠传系列发布