设计模式之单例模式

单例模式可能是设计模式中最简单的模式,很多时候,我甚至觉得不应该叫设计模式,只是一个编码技巧

接下来我们看看什么是单例模式

单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例
也就是说,不管程序多复杂,在一个页面new了多少次某个类,如果这个类初始化用单例模式,就只会被创建一次,其他的new会复用第一次的创建,不会多次初始化
这样的好处是显而易见的,如果初始化里有数据库连接操作,如果有大数组循环,省下来的开销是很可观的

那么,如何做到呢?下面用代码例子来说明

class Test {

    //保存例实例在此属性中
    private static $_instance;

    //构造函数声明为private,防止直接创建对象
    private function __construct() {
        echo '我被实例化了!';
    }

    //单例方法
    public static function getInstance()
    {
        //var_dump(isset(self::$_instance));
        
        if(!isset(self::$_instance)) {
            self::$_instance=new self();
        }
        return self::$_instance;
    }

    //阻止用户复制对象实例
    private function __clone() {
        trigger_error('Clone is not allow', E_USER_ERROR);
    }

    function godeye() {
        echo("www.godeye.org");
    }
}
从上面代码可以看出,static $_instance用一个静态变量存初始化值,第二次调用getInstance初始化的时候,会先判断$_instance有没有值,有值的话就不再初始化
以此来实现单例模式


转自:http://www.godeye.org/lesson/95

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值