PHP设计模式——单例模式

写了那么多年的代码,从来没有好好地写过笔记做过积累,一直在被业务给牵着跑,不得不说是个遗憾。现在开始要多复习、多学习,让自己迅速成长起来。

在设计模式中,我个人觉得单例模式是最简单、最好理解的一种,不过由于PHP的特殊性,PHP的单例模式只是在一次请求中才是有效的。

看看单例模式的实现代码先:

<?php
class Singleton {
    protected static $_instance = null;

    private function __construct() {}

    private function __clone() {}

    public static function getInstance() {
        if (!isset(self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
}


当然,一个安全的单例模式应该要把构造函数和克隆函数设置为私有,以防止外部代码直接生成类的实例。

很简单,用静态方法返回一个全局唯一的实例;下面是测试代码,我用simpletest框架做测试:

<?php
require_once 'simpletest/autorun.php';
require_once '../singleton.php';

class TestSingleton extends UnitTestCase {
    public function testIsSingleton() {
        $ins1 = Singleton::getInstance();
        $ins2 = Singleton::getInstance();
        $this->assertTrue($ins1===$ins2);
        $this->assertEqual($ins1, $ins2);
    }
}

测试通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值