首页 > 开发 > Php > 正文

php设计模式之单例模式代码

2019-10-28 20:21:45
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了php设计模式之单例模式的实现代码,具有一定的参考价值,感兴趣的朋友可以参考一下
 

php设计模式之单例模式的例子,供大家参考,具体内容如下

<?php  /**   * php设计模式 单例模式   */  class Fruit{    private static $instanceMap = array();    //protected getter for singleton instances    protected static function getSingleton($className){      //保证单例模式 并且不能从控制器实例化和克隆      if (!isset(self::$instanceMap[$className])) {        $object = new $className;        //Make sure this object inherit from Singleton        if ($object instanceof Fruit) {          self::$instanceMap[$className] = $object;          var_dump($object);        } else {          throw SingletonException("Class '$className' do not inherit from Singleton!");        }      }      return self::$instanceMap[$className];    }    //protected constructor to prevent outside instantiation    protected function __construct(){}    //denie cloning of singleton objects    public final function __clone(){      trigger_error('It is impossible to clone singleton', E_USER_ERROR);    }  }  class Apple extends Fruit{    protected $rndId;    public function __construct(){      $this->rndId = rand();    }    public function whatAmI(){      echo 'I am a Apple(' . $this->rndId . ')<br />';    }    public static function getInstance(){      //echo get_class();      return Fruit::getSingleton(get_class());    }  }  class GreenApple extends Apple{    public function whatAmI(){      echo 'I am a GreenApple(' . $this->rndId . ')<br />';    }    public static function getInstance(){      return Fruit::getSingleton(get_class());    }  }  $apple1 = Apple::getInstance();  //var_dump($apple1);  $apple2 = GreenApple::getInstance();  $apple1->whatAmI();// should echo 'I am a Apple(some number)  $apple2->whatAmI();// should echo 'I am a GreenApple(some number)  $apple1 = Apple::getInstance();  $apple2 = GreenApple::getInstance();  //保证单例模式  $apple1->whatAmI();// should echo 'I am a Apple(same number as above)  $apple2->whatAmI();// should echo 'I am a GreenApple(same number as above)  // $a = clone $apple1;// this should fail  // $b = clone $apple2;// this should fail

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。



注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表