设计模式之单例模式

单例模式【Single】

单例模式在面向对象开发中比较常用,也是最简单的一种模式。单例就是单个实例,单个对象的意思。就是我们去实例化一个类的时候,不管调用多少次,都永远只有一个实例。这样就节省内存分配开支

原理

将构造函数__construct设置为私有的private,对外提供一个静态方法.一般是用getInstance获取实例。在getInstance方法里做统一判断是否有new一个实例。存在的话就直接返回。没有就new一个。

class Single {
    private $name;//声明一个私有的实例变量
    private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
    }
    private function __clone(){//防止克隆对象
     }
    static public $instance;//声明一个静态变量(保存在类中唯一的一个实例)
    static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象
        if(!self::$instance) self::$instance = new self();
            return self::$instance;
    }
    public function setname($n){ $this->name = $n; }
    public function getname(){ return $this->name; }
}
$oa = Single::getinstance();
$ob = Single::getinstance();
$oa->setname('hello world');
$ob->setname('good morning');
echo $oa->getname();//good morning
echo $ob->getname();//good morning

 

posted @ 2020-07-01 21:29  成文的博客  阅读(128)  评论(0编辑  收藏  举报