单例模式通俗地说就是实例化出来的对象是唯一的

原创 2018-12-14 21:49:49 458
摘要:单例模式的类具有以下4个特点:1. 构造器私有化,为了防止外部代码使用new来创建对象;2. 克隆私有化,为了防止外部代码使用clone克隆当前类的实例;3. 拥有一个保存类的实例的静态成员变量;4. 拥有一个对外接口创建并返回当前类的唯一实例的公共的静态方法;单例类不能再在其它类中直接实例化,只能被其自身实例化;也不会创建实例副本。class Greeting {  

单例模式的类具有以下4个特点:
1. 构造器私有化,为了防止外部代码使用new来创建对象;
2. 克隆私有化,为了防止外部代码使用clone克隆当前类的实例;
3. 拥有一个保存类的实例的静态成员变量;
4. 拥有一个对外接口创建并返回当前类的唯一实例的公共的静态方法;

单例类不能再在其它类中直接实例化,只能被其自身实例化;也不会创建实例副本。

class Greeting {
    private $greet;
    private function __construct(){}//构造器私有化,为了防止外部代码使用new来创建对象。
    private function __clone(){} //克隆私有化,为了防止外部代码使用clone克隆当前类的实例。
    
    static public $instance;//创建类的内部静态属性,保存类的唯一实例
    static public function getinstance(){//创建一个外部接口,创建并返回当前类的唯一实例
        if(!self::$instance) self::$instance = new self();
        return self::$instance;
    }
    public function set_greet($words){
     $this->greet = $words;
    }
    public function get_greet(){
     return $this->greet;
    }
}
$instance_1 = Greeting::getinstance();
$instance_2 = Greeting::getinstance();
$instance_1->set_greet('good evening');
$instance_2->set_greet('good morning');
echo $instance_1->get_greet();//输出:good morning
echo "<br>";
echo $instance_2->get_greet();//输出:good morning


批改老师:韦小宝批改时间:2018-12-15 09:52:26
老师总结:PHP中的设计模式是源于java!设计模式现在已经成了非常重要的一直代码编写方式!

发布手记

热门词条