【案例】
黑枣防克隆公司是生产了一只超级狗。因这只超级狗因为威力巨大,两个就足以毁灭宇宙。想方设法防止其被克隆。
【分析OOA】
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
【设计OOD】
<UML>
<说明>
1. SingletonDog的__construct方法设为私有,以防止new实例化
2. SingletonDog提供getInstance静态公共方法返回唯一实例
【编程 OOP】
<代码>
class SingletonDog
{
private static $instance;
private function __construct()
{
}
public static function getInstance()
{
if (self::$instance == NULL) {
self::$instance = new SingletonDog();
}
return self::$instance;
}
public function shout()
{
echo "Big Dog Wooooooo!!!!";
}
}
【测试用例Test Case】
<代码>
class testDriver
{
public function run()
{
$test = SingletonDog::getInstance()->shout();
}
}
$test = new testDriver();
$test->run();
【输出】
【小结】
Singleton模式的核心是“如何控制用户使用new对一个类的构造器的任意调用”,Singleton类中的实例构造器可以设置为Protected以允许子类派生。
********************************************
* 作者:叶文涛
Php设计模式之【单例模式Single Pattern】
* 参考:
* 《Head First设计模式》Eric Freeman等著
*《PHP高级程序设计:模式、框架和测试》 Kevin McArthur 著 汪泳 等译
******************转载请注明来源 ***************