第一章:独孤九剑 - 单例模式
武林秘籍
在编程江湖中,有一门绝世武功名为"独孤九剑",讲究"无招胜有招",天下武功唯快不破。
而在设计模式中,有一门与之对应的绝学——单例模式。
何为单例?
单例模式,顾名思义,就是只有一个实例。就像武林中独一无二的绝世高手,世间仅此一人。
武功心法
<?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";
?>
江湖应用
- 数据库连接 - 就像武林盟主,全局唯一
- 配置管理 - 如同武林秘籍,全派共享
- 日志记录 - 如同武林史官,记录江湖大事
独孤九剑要诀
- 无招胜有招:单例模式看似简单,却蕴含大道至简的哲理
- 天下武功唯快不破:单例模式避免重复创建,提升性能
- 独孤求败:世间仅此一例,别无分号
修炼要点
- 线程安全:多线程环境下确保单例唯一性
- 延迟加载:按需创建,避免资源浪费
- 防止反射:防止通过反射机制创建新实例
下回预告:第二章:造化功 - 工厂模式
本文章由设计模式武侠传系列发布