设计模式之单例模式

发布于 / 1年前 - 更新于 / 1年前


设计模式之单例模式

何为单例模式:

  1. 单例类有且只能有一个实例对象
  2. 单例类必须自己创建自己的唯一实例
  3. 单例类必须给其他对象提供这一实例

重点:只能有一个实例对象

实例代码

<?php class SingleObject { public $num = 1; public static $instance = null; // 单例类构造函数私有化,外部不能 new 来创建实例 private function __construct(){} // 单例类提供创建自己实例函数 public static function getInstance(){ if(self::$instance === null){ self::$instance = new SingleObject(); } return self::$instance; } public function showMessage(){ $this->num++; echo $this->num.'->'; } } // 单例类不能new 来实例化,要调用showMessage函数就只能用单例类的getInstance函数来实例实例化 echo "单例模式"; $s1 = SingleObject::getInstance(); $s1->showMessage(); $s1->showMessage(); $s1->showMessage(); $s2 = SingleObject::getInstance(); $s2->showMessage(); $s2->showMessage(); $s2->showMessage(); // 打印结果:单例模式2->3->4->5->6->7-> echo "<br/>非单例模式"; class TestObject { public $num = 1; public function showMessage(){ $this->num++; echo $this->num.'->'; } } $O1 = new TestObject(); $O1->showMessage(); $O1->showMessage(); $O1->showMessage(); $O2 = new TestObject(); $O2->showMessage(); $O2->showMessage(); $O2->showMessage(); // 打印结果:非单例模式2->3->4->2->3->4-> ?>

本作品采用《CC 协议》,转载必须注明作者和本文链接