基于php设计模式中单例模式的应用分析


Posted in PHP onMay 15, 2013

单例模式:简单的说,一个对象只负责一个特定的任务。

单例类:
    1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化
    2.拥有一个保存类的实例静态成员变量
    3.拥有一个访问这个实例的公共的静态方法。[常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到此类是否已经被实例化]
    注:需要创建__clone()方法防治对象被复制
作用:
    1.php的应用主要用于数据库,所以一个应用中会存在大量的数据库操作,使用单例模式,则可以避免大量new操作消耗的资源
    2.如果系统中需要一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现。参照ZF的FrontController部分
    3.在一个页面请求汇总,便于进行调试,因为所有的代码都集中在一个类中,我们可以在类中设置钩子,输出日志,从而避免到处var_dump,echo。

<?php 
class DanLi{ 
    //静态成员变量 
    private static $_instance; 
    //私有的构造方法 
    private function __construct(){ 
    } 
    //防止对象被克隆 
    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 "ok"; 
    } 
} //错误:$danli = new DanLi(); $danli_clone = clone $danli; 
//正确:$danli = DanLi::getInstance(); $danli->test(); 
?>
PHP 相关文章推荐
PHP+javascript模拟Matrix画面
Oct 09 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
更改localhost为其他名字的方法
Feb 10 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
基于PHP生成简单的验证码
Jun 01 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
基于php设计模式中工厂模式详细介绍
May 15 #PHP
php笔记之:数据类型与常量的使用分析
May 14 #PHP
PHP笔记之:基于面向对象设计的详解
May 14 #PHP
php在window iis的莫名问题的测试方法
May 14 #PHP
PHP处理excel cvs表格的方法实例介绍
May 13 #PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 #PHP
基于wordpress主题制作的具体实现步骤
May 10 #PHP
You might like
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Python3基础之基本运算符概述
2014/08/13 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
一张图带我们入门Python基础教程
2017/02/05 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python 一维二维插值实例
2020/04/22 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
销售冠军获奖感言
2014/02/03 职场文书
图书室标语
2014/06/21 职场文书
聘用意向书
2014/07/29 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
初中家长评语大全
2014/12/26 职场文书
运动会通讯稿600字
2015/07/20 职场文书