cari

Rumah  >  Soal Jawab  >  teks badan

PHP的单态设计模式

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

阿神阿神2978 hari yang lalu883

membalas semua(1)saya akan balas

  • 学习ing

    学习ing2016-11-08 16:02:54

    对于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;
    ?>

    balas
    0
  • Batalbalas