PHP的单态设计模式
阿神
阿神 2016-11-08 16:02:35
0
1
842

对php单态设计模式不怎么理解,能用通俗的例子讲解讲解吗? 谢谢!

阿神
阿神

闭关修行中......

reply all(1)
phpcn_u33

对于java转过来程序员说是单态设计模式,在PHP上通常说是单例模式,说法不一样,手册上也有介绍:

单例模式(Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。   使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。  
class Example
{
   // 保存类实例在此属性中
   private static $instance;

   // 构造方法声明为private,防止直接创建对象
   private function __construct()
   {
       echo 'I am constructed';
   }

   // singleton 方法
   public static function singleton()
   {
       if (!isset(self::$instance)) {
           $c = __CLASS__;
           self::$instance = new $c;
       }

       return self::$instance;
   }

   // Example类中的普通方法
   public function bark()
   {
       echo 'Woof!';
   }

   // 阻止用户复制对象实例
   public function __clone()
   {
       trigger_error('Clone is not allowed.', E_USER_ERROR);
   }

}

?>

这样我们可以得到一个独一无二的Example类的对象。  

// 这个写法会出错,因为构造方法被声明为private
$test = new Example;

// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->bark();

// 复制对象将导致一个E_USER_ERROR.
$test_clone = clone $test;
?>

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!