程序员

设计模式之——单例模式

2019-01-18  本文已影响0人  turbo_chen09

为什么使用单例模式?

创建一个对象,只需实例化一次,就可以在项目内部任何位置使用。

如何创建单例模式?

  私有化构造函数 private function __construct(){}。

上述代码功能:限制用户手动实例化,阻止 new className()  产生实例 。


static private $instance;

static function getInstance(){

      if(!self::$instance){

            self::$instance = new className();

        }

        return self::$instance;

上述代码功能:className::getInstance() 创建一个唯一实例。之前限制了 new className()方法,所以要创建一个静态方法,从内部实例化。

private function __clone(){}

上述代码功能: 将克隆方法私有化,防止用户克隆对象。

接下来上完整代码:

class lesson

{

    private $name;//私有属性,用于测试

    static private $instance;//用户绑定一个实例

    private function __construct(){} //阻止 new lesson()

    private function __clone(){}   //阻止 克隆方法

    //产生唯一实例

    static public function getInstance()

{

        if (!self::$instance) {

            self::$instance = new lesson();

        }

        return self::$instance;

    }

    public function setName($name){

        $this->name = $name;

    }

    public function getName(){

        echo $this->name;

    }

}

$a = lesson::getInstance();//创建一个实例

$a->setName('简书');//对实例的属性赋值

unset($a);//删除这个实例

$b = lesson::getInstance();//创建新实例

$b->getName(); //输出结果: 简书

说明实例只被实例化一次,并保存了第一次赋值的结果。

上一篇下一篇

猜你喜欢

热点阅读