首页 > 后端开发 > php教程 > 学习php设计模式之单例模式

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

WBOY
发布: 2016-07-25 09:05:17
原创
781 人浏览过
  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. ?>
复制代码


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板