博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php设计模式--单例模式
阅读量:5235 次
发布时间:2019-06-14

本文共 1135 字,大约阅读时间需要 3 分钟。

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

单例类的特征:

1、构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化;

2、拥有一个保存类的实例的静态成员变量

3、拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化)

另外,需要创建__clone()方法防止对象被复制(克隆)

场景:

1、php的应用主要在于数据库应用所以一个应用中会存在大量的数据库操作使用单例模式则可以避免大量的new 操作消耗的资源。

2、如果系统中需要有一个类来全局控制某些配置信息那么使用单例模式可以很方便的实现这个可以参看ZF的FrontController部分。

/** 设计模式之单例模式* $_instance必须声明为静态的私有变量* 构造函数和析构函数必须声明为私有,防止外部程序new* 类从而失去单例模式的意义* getInstance()方法必须设置为公有的,必须调用此方法* 以返回实例的一个引用* ::操作符只能访问静态变量和静态函数* new对象都会消耗内存* 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后,* 该对象可以被其它众多对象所使用。 */class Test { //保存类实例的静态成员变量private static $_instance; //private标记的构造方法private function __construct(){echo 'test';} //创建__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 '调用方法成功';}}

 

 

 

3、在一次页面请求中便于进行调试因为所有的代码(例如数据库操作类db)都集中在一个类中我们可以在类中设置钩子输出日志,从而避免到处var_dump, echo

转载于:https://www.cnblogs.com/tianye8123/p/5956065.html

你可能感兴趣的文章
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
中国剩余定理
查看>>
uva 10137 The trip
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>