摘要:代码实现单例模式静态变量保存全局实例私有构造函数,防止外界实例化对象私有克隆函数,防止外界克隆对象静态方法,单例统一访问路口单例模式的优缺点优点改进系统的设计是对全局变量的一种改进缺点难于调试隐藏的依赖关系无法用错误类型的数据覆写一个单例
单例模式(Singleton Pattern 单件模式或单元素模式)
单例模式有以下3个特点:
1、一个类只能有一个类对象(只能实例化一个对象)
2、它必须自己创建这个实例
3、它必须自行实例化并向整个系统提供这个实例
4、构造函数,克隆函数必须声明为私有的,必须提供一个访问这个实例的公共静态方法(通常命名为getInstance),从而返回唯一实例的一个引用
采用单例模式的原因:
php语言是一种解释型的脚本语言,这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没办法使得某个对象常驻内存,这和编译型语言不同,比如在java中单例会一直存在整个应用程序的生命周期里,变量是跨页面的,真正做到这个实力在应用程序生命周期的唯一性。然而在PHP中,所有的变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空,这样的PHP单例模式就没有什么意义,所以PHP单例模式我觉得只是针对单次页面级请求时粗线多个应用场景并需要共享同一对象资源时是非常有意义的。
上面的对象图中,有一个"单例对象",而"客户甲","客户乙"和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
php代码实现单例模式:
class User {
//静态变量保存全局实例 private static $_instance=null; //私有构造函数,防止外界实例化对象 private function __construct(...){ $this->_db = pg_connect(...);//postgrsql } //私有克隆函数,防止外界克隆对象 private function __clone() { }; //静态方法,单例统一访问路口 public static function getInstance(){ if(! (self::$_instance instanceof self) ) { self::$_instance = new self(); } return self::$_instance; }
?>
单例模式的优缺点:
优点:
1、改进系统的设计
2、是对全局变量的一种改进
缺点:
1、难于调试
2、隐藏的依赖关系
3、无法用错误类型的数据覆写一个单例
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40559.html
摘要:代码实现单例模式静态变量保存全局实例私有构造函数,防止外界实例化对象私有克隆函数,防止外界克隆对象静态方法,单例统一访问路口单例模式的优缺点优点改进系统的设计是对全局变量的一种改进缺点难于调试隐藏的依赖关系无法用错误类型的数据覆写一个单例 单例模式(Singleton Pattern 单件模式或单元素模式)单例模式有以下3个特点:1、一个类只能有一个类对象(只能实例化一个对象)2、它必...
摘要:代码实现单例模式静态变量保存全局实例私有构造函数,防止外界实例化对象私有克隆函数,防止外界克隆对象静态方法,单例统一访问路口单例模式的优缺点优点改进系统的设计是对全局变量的一种改进缺点难于调试隐藏的依赖关系无法用错误类型的数据覆写一个单例 单例模式(Singleton Pattern 单件模式或单元素模式)单例模式有以下3个特点:1、一个类只能有一个类对象(只能实例化一个对象)2、它必...
摘要:很多接触的框架就是基于各种模式设计形成的。在所有模式设计中,有三种基础设计模式,单例模式,工厂模式,注册树模式,其他模式往往基于这几种模式,今天带来的是单例模式。工厂模式更多考虑的是扩展维护的问题。 (非原创) 一.单例模式 模式设计是什么?初学者一开始会被这高大上的名称给唬住。而对于有丰富编程经验的老鸟来说,模式设计又是无处不在。很多接触的框架就是基于各种模式设计形成的。 简单说,在...
摘要:单例模式顾名思义,就是只有一个实例。为什么要使用单例模式语言本身的局限性语言是一种解释型的脚本语言,这种运行机制使得每个页面被解释执行后,所有的相关资源都会被回收。 单例模式(Singleton Pattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 为什么要使用单例模式 1、PHP语言本身的局限性P...
阅读 4212·2021-09-26 10:11
阅读 2633·2021-07-28 00:37
阅读 3179·2019-08-29 15:29
阅读 1146·2019-08-29 15:23
阅读 3110·2019-08-26 18:37
阅读 2446·2019-08-26 10:37
阅读 574·2019-08-23 17:04
阅读 2328·2019-08-23 13:44