Heim > Backend-Entwicklung > PHP-Tutorial > 学习php设计模式之单例模式

学习php设计模式之单例模式

WBOY
Freigeben: 2016-07-25 09:05:17
Original
780 Leute haben es durchsucht
  1. /**

  2. * php设计模式之单例模式
  3. * $_instance必须声明为静态的私有变量
  4. * 构造函数和析构函数必须声明为私有,防止外部程序new
  5. * 类从而失去单例模式的意义
  6. * getInstance()方法必须设置为公有的,必须调用此方法
  7. * 以返回实例的一个引用
  8. * ::操作符只能访问静态变量和静态函数
  9. * new对象都会消耗内存
  10. * 使用场景:最常用的地方是数据库连接。
  11. * 使用单例模式生成一个对象后,
  12. * 该对象可以被其它众多对象所使用。
  13. * @link http://bbs.it-home.org
  14. */
  15. class Danli {

  16. //保存类实例的静态成员变量
  17. private static $_instance;
  18. //private标记的构造方法
  19. private function __construct(){
  20. echo 'This is a Constructed method;';
  21. }
  22. //创建__clone方法防止对象被复制克隆
  23. public function __clone(){
  24. trigger_error('Clone is not allow!',E_USER_ERROR);
  25. }
  26. //单例方法,用于访问实例的公共的静态方法

  27. public static function getInstance(){
  28. if(!(self::$_instance instanceof self)){
  29. self::$_instance = new self;
  30. }
  31. return self::$_instance;

  32. }
  33. public function test(){

  34. echo '调用方法成功';
  35. }
  36. }
  37. //用new实例化private标记构造函数的类会报错

  38. //$danli = new Danli();
  39. //正确方法,用双冒号::操作符访问静态方法获取实例
  40. $danli = Danli::getInstance();
  41. $danli->test();
  42. //复制(克隆)对象将导致一个E_USER_ERROR
  43. $danli_clone = clone $danli;
  44. ?>
复制代码


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage