设计模式之单例模式--instance
2024-09-05 03:39:55
<?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
最新文章
- Nginx 配置从零开始
- bzoj 1031 [JSOI2007]字符加密Cipher
- PHP实现微信公众平台开发 全套视频资源下载
- 攻城狮在路上(叁)Linux(十三)--- 文件与目录的管理
- [转载] vim带你装逼带你飞(一)
- RedHat6.2 下RRDTool安装方法
- w-BIG TABLE-view+where-small table
- 使用sublime text3的一些事
- ubuntu 系统出错一览
- 译文链接:http://www.codeceo.com/article/10-truth-programmer-must-know.html
- Android 自定义控件 EditText输入框两边加减按钮Button
- iOS 饼状图
- JavaWeb之JSTL标签
- activiti怎么实现用户自定义流程?请先看这里
- Oracle rac 监听状态异常远程连接问题解决(TNS-12541 TNS-12560 TNS-00511 Linux Error:111 ORA-12502)
- UWP简单测试
- [JS] Topic - variable and function hoisting
- 微信小程序 - async/await
- Spark Shuffle 中 JVM 内存使用及配置内幕详情
- 【spring】- springmvc 工作原理
热门文章
- C++中两个类相互include的问题
- 在python中Flask配置服务
- PHP 高精度计算
- tomcat的bin目录中startup.bat/tomcat.6.exe/tomcat6w.exe区别
- python 面向对象三大特性(封装 多态 继承)
- <;转载>; Jquery的使用技巧-实用!
- CentOS 7.0 防火墙
- Android开发者必知的5个开源库
- 【BZOJ1408】[Noi2002]Robot DP+数学
- stochastic matrix