Php设计模式之【单例模式Single Pattern】

【案例】

黑枣防克隆公司是生产了一只超级狗。因这只超级狗因为威力巨大,两个就足以毁灭宇宙。想方设法防止其被克隆。

【分析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 著 汪泳 等译

******************转载请注明来源 ***************



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值