<?php
header('Content-Type:text/html;charest=utf-8');
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序new
* 类从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法
* 以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存
* 使用场景:最常用的地方是数据库连接。
* 使用单例模式生成一个对象后,
* 该对象可以被其它众多对象所使用。
*/
class Danli { //保存类实例的静态成员变量
private static $_instance; //private标记的构造方法
private function __construct(){
echo 'This is a Constructed method;';
} //创建__clone方法防止对象被复制克隆
public function __clone(){
trigger_error('Clone is not allow!',E_USER_ERROR);
} //单例方法,用于访问实例的公共的静态方法
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
} public function test(){
echo '调用方法成功';
} } //用new实例化private标记构造函数的类会报错
//$danli = new Danli();
//正确方法,用双冒号::操作符访问静态方法获取实例
$danli = Danli::getInstance();
$danli->test(); //This is a Constructed method;调用方法成功 //复制(克隆)对象将导致一个 E_USER_ERROR
$danli_clone = clone $danli; //Fatal error: Clone is not allow! in D:\wamp\www\study\abstract_class\instance.php on line 28

最新文章

  1. Nginx 配置从零开始
  2. bzoj 1031 [JSOI2007]字符加密Cipher
  3. PHP实现微信公众平台开发 全套视频资源下载
  4. 攻城狮在路上(叁)Linux(十三)--- 文件与目录的管理
  5. [转载] vim带你装逼带你飞(一)
  6. RedHat6.2 下RRDTool安装方法
  7. w-BIG TABLE-view+where-small table
  8. 使用sublime text3的一些事
  9. ubuntu 系统出错一览
  10. 译文链接:http://www.codeceo.com/article/10-truth-programmer-must-know.html
  11. Android 自定义控件 EditText输入框两边加减按钮Button
  12. iOS 饼状图
  13. JavaWeb之JSTL标签
  14. activiti怎么实现用户自定义流程?请先看这里
  15. Oracle rac 监听状态异常远程连接问题解决(TNS-12541 TNS-12560 TNS-00511 Linux Error:111 ORA-12502)
  16. UWP简单测试
  17. [JS] Topic - variable and function hoisting
  18. 微信小程序 - async/await
  19. Spark Shuffle 中 JVM 内存使用及配置内幕详情
  20. 【spring】- springmvc 工作原理

热门文章

  1. C++中两个类相互include的问题
  2. 在python中Flask配置服务
  3. PHP 高精度计算
  4. tomcat的bin目录中startup.bat/tomcat.6.exe/tomcat6w.exe区别
  5. python 面向对象三大特性(封装 多态 继承)
  6. &lt;转载&gt; Jquery的使用技巧-实用!
  7. CentOS 7.0 防火墙
  8. Android开发者必知的5个开源库
  9. 【BZOJ1408】[Noi2002]Robot DP+数学
  10. stochastic matrix