php设计模式-单例模式

今天去面试了一家公司,感觉自己的基础知识都忘干净了,笔试手写代码很多地方都不知道怎么写了,可能跟自己平时代码复制以及IDE有一定关系了,现在自己开始慢慢复习下基础,手敲下代码吧!

今天先把php最简单的一个设计模式-单例模式写一个例子:

<?php

class Foo
{

    // 声明一个静态变量才存储实例化对象
    private static $instance;

    public $foo = '';

    // 声明似有函数防止对象被new 实例化
    private function __construct()
    {
    }

    public static function getInstance()
    {

        if (!self::$instance) {
            self::$instance = new self();
        }

        return self::$instance;
    }


    public function __clone()
    {
        throw new Exception("can't clone this instance");
    }

}

// 直接报错
//$first = new Foo();

$first = Foo::getInstance();
// 直接报异常
//$second = clone $first;

$second = Foo::getInstance();

$first->foo = 'first';

$second->foo = 'second';

// second
echo $first->foo;

// second
echo $second->foo;


以上代码就是简单的单例模式,原理:每次调用getInstance,会判断是否已经存在此对象,如果没有就实例化,如果有就直接返回此对象。

本文已经被查看501次

发表评论

电子邮件地址不会被公开。 必填项已用*标注