php与设计模式-单例模式

PHP设计模式之单例模式 单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在PHP中,可以通过将构造函数设为私有,使用静态变量保存实例,并提供一个公共的静态方法来实现单例模式。单例模式能够提供对唯一实例的受控访问,避免了重复创建和销毁对象的开销,并提供了全局访问点。单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。二、实现单例模式的步骤。一、什么是单例模式? 阅读详情

单例模式

应用:
日志,数据库等公用类
主要优点:

  • 提供了对唯一实例的受控访问。
  • 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
  • 允许可变数目的实例。

主要缺点:

  • 由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。
  • 单例类的职责过重,在一定程度上违背了“单一职责原则”。
  • 滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
(懒汉,线程不安全)
public class Singleton { 
    private static Singleton instance; 
    private Singleton (){}   
    public static Singleton getInstance() { 
    if (instance == null) { 
        instance = new Singleton(); 
    } 
    return instance; 
    } 
}
 
 
(懒汉,线程安全)
public class Singleton { 
    private static Singleton instance; 
    private Singleton (){} 
    public static synchronized Singleton getInstance() { 
    if (instance == null) { 
        instance = new Singleton(); 
    } 
    return instance; 
    } 
}
 
(饿汉)(php不能用)
public class Singleton { 
private static Singleton instance = new Singleton(); 
    private Singleton (){} 
    public static Singleton getInstance() { 
    return instance; 
    }  
}

(双重校验锁)
public class Singleton { 
    private volatile static Singleton singleton; 
    private Singleton (){} 
    public static Singleton getSingleton() { 
    if (singleton == null) { 
        synchronized (Singleton.class) { 
        if (singleton == null) { 
            singleton = new Singleton(); 
        } 
        } 
    } 
    return singleton; 
    } 
}

/* 设计模式之单例模式
* $_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();
//复制(克隆)对象将导致一个E_USER_ERROR
//$danli_clone = clone $danli;

请关注我的订阅号

订阅号.png

腾讯WeKnora开源了!手把手教你用Docker+Ollama本地部署多模态知识库(附避坑指南) 本文详细介绍了腾讯开源的多模态知识库工具WeKnora的本地部署方法,通过Docker和Ollama实现完全离线运行。文章包含环境准备、核心组件配置、Ollama模型集成、系统启动验证及高级性能调优等实战内容,特别适合需要构建私有化知识库的中小团队和个人开发者。 阅读详情

相关推荐

基于 MATLAB 的综合能源系统建模:全面解析与案例应用 

本文详细介绍了基于 MATLAB 的综合能源系统建模相关知识,包括 MATLAB 在综合能源建模中的优势、综合能源系统各组件和网络的建模方法,并通过园区综合能源系统的案例展示了从建模到优化调度求解以及结果分析的全过程。在当今全球能源格局深刻变革的背景下,综合能源系统(Integrated Energy System,IES)作为一种创新的能源供应体系,整合了多种能源形式,如电力、热力、燃气等,以实现能源的高效生产、传输、分配和利用。需要考虑燃气的压力、流量特性以及管道的阻力特性等。

qq_57128262的博客 1334

php手写工厂和单例模式,PHP设计模式之工厂模式与单例模式

本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下:设计模式简单说应对某类问题而设计的解决方式工厂模式:应对需求创建相应的对象class factory{function __construct($name){if(file_exists('./'.$name.'.class.php')){return new $name;}else{die('not exi...

weixin_29534421的博客 235

VTK学习(入门级教程,包括安装和使用)~持续更新中

说明:研究QT+VTK有段时间了,准备把学到的东西分享给大家,这篇博客以VS+QT+VTK为主进行展开学习的。

HXX904的博客 4754

php 单例模式原理,PHP设计模式之单例模式

在开发PHP的项目时我们经常会先考虑我们使用什么设计模式,是程序执行更顺利,接下来吾爱编程为大家介绍一下PHP设计模式之单例模式原理与实现方法,有需要的小伙伴可以参考一下:1、定义:单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2、要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系...

weixin_42509847的博客 252

eNSP网络构建—建立小型局域网

企业私有网络构建运维 实战案例——使用模拟器构建局域网络 案例分析 1.架构分析 (1)需求分析 本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之...

_ 4万+

Redis Lua引擎UAF漏洞CVE-2025-49844深度剖析与复现实践

内存安全是软件系统稳定性的基石,其核心原理在于确保程序对内存的访问始终处于合法、受控的状态。在C/C++等手动管理内存的语言中,Use-After-Free(释放后使用)是一种典型的高危内存安全漏洞,它源于已释放的内存区域仍被程序指针引用,导致数据混乱或程序崩溃。这类漏洞的技术价值在于其往往能突破高级语言的安全边界,直接威胁进程本身,危害等级极高,常见于数据库、浏览器等核心基础设施。在Redis这样的高性能内存数据库中,其内置的Lua脚本引擎为复杂操作提供了强大支持,但同时也引入了沙箱环境下的复杂内存对象生

weixin_42530732的博客 365

第二节 PHP设计模式(一)—单例模式(Singleton Pattern)

写在开始,凯 建议大家把前五节看完,这样有助于大家将来研究框架源码。主流框架中都有用到这些设计模式,单例、工厂、外观、注册树这几种是支撑TP和laravel框架运行必不可少的设计模式,大家一定要仔细研究一下。 单例模式(Singleton Pattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 (一)为...

凯 327

2024年最新双摄像头的实时视频拼接及目标跟踪(一)_监控视频拼接实时(1),网络相关+C C++三方库的源码分析+数据结构与算法

opencv中采用了SURF,ORB进行特征点提取,如果装的是opencv2.0版本,则可以直接用SURF,如果是3.0版本,则需要下载相应的contrib库进行安装。原理不赘述,给出其实验结果对比和分析,原始图像1SURF特征点提取网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!

m0_51437227的博客 935

PHP设计模式-单例模式

一、概述 “单例模式”是一种常见的设计模式,顾名思义单例模式是为了保证在整个程序中只有一个类的实例供外界使用 二、核心 保证类只有一个实例 类的自行创建实例 禁止外部对该类进行实例化、克隆、序列化、继承 三、架构图 四、代码示例 <?php /* * final 禁止类被继承 */ final Class Singleton { /* * 私有静态变量存储实例 */ private static $instance; /* * 私

瞎玩儿~ 2578

在 Zemax 非序列模式下建立干涉仪模型

Zemax 利用其相干检测功能,将到达探测器的射线的能量相干地组合起来,同时考虑每条检测到的射线的幅度和相位。从对这些干涉条纹的定量评估来看,光学干涉仪具有广泛的应用,包括在天文学中用于测量天体的大小,在计量学中用于精确测量距离,在显微镜中用于提高分辨率,以及在物理和工程的各个领域中用于检测条件的微小变化。在光学干涉仪中,使用的是光波。非相干和相干相加的总功率是守恒的,但相干光束的峰值辐照度应该是非相干光束总和的 2 倍,这是理所当然的。请注意,条纹的缺失是显而易见的,因为不再从相干的角度观察探测器。

jkh920184196的博客 2379

WPS Office 2019 For Linux二次开发全流程:从源码下载到Demo运行

本文详细介绍了在Linux环境下进行WPS Office 2019 C++二次开发的全流程,涵盖从开发环境准备、源码获取、核心依赖(Qt与WPS)安装配置,到最终编译运行官方Demo的完整步骤。文章重点解析了环境搭建中的常见问题与解决方案,旨在帮助开发者快速上手WPS二次开发。

weixin_29001423的博客 388

php 单例模式 工厂,PHP设计模式,工厂模式、单例模式

转载歪麦博客https://www.awaimai.com/patterns面向对象是PHP5之后增加的功能,是PHP走向现代语言的一个标志。在过程式设计时代,PHP以学习成本低、入门快的特点赢得很多WEB开发者的青睐,但同时也限制了PHP的发展。借鉴Java和C++之后的PHP语言,在增加面向对象特性的同时,还保持着简便易懂的特点。但是,如果只是使用了PHP的继承特性,并不是面向对象的设计,因为...

weixin_42497633的博客 207

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4021

单例设计模式(singleton design pattern)---php实现

singleton design pattern的必须的三个条件 1.拥有一个构造函数,并且为private 2.拥有一个静态成员变量用来保持类的实例 3.拥有一个访问这个实例的静态方法

ManNiaoQinFen的博客 472

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PHP框架中的设计模式-单例模式|Singleton Design Pattern-ThinkPHP v5.0

关联文章请参考:PHP框架中的设计模式-单例模式|Singleton Design Pattern-ThinkPHP v3.2 下面我们来看看ThinkPHP v5.0是如何使用单例模式来复用同一数据库连接的: // ThinkPHP v5.0中使用单例模式实例化数据库连接:Db::connect($connection); // Db类文件路径:\thinkphp\library\thin...

Spark Lee 691

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

php 单例设计模式缺点,PHP设计模式之单例模式定义与用法分析

本文实例分析了PHP设计模式之单例模式。分享给大家供大家参考,具体如下:单例模式(Singleton Pattern 单件模式或单元素模式),是常见的一种设计模式,它有三个特点1.只能有一个实例2.必须自行创建这个实例3.必须给其他对象提供这一实例下面用PHP代码实现一下/*** Created by PHPStorm.* User: tiansi* Date: 18/1/2* Time: 下午3...

weixin_42393526的博客 229

php手写工厂和单例模式,详解PHP设计模式中工厂模式和单例模式

PHP设计模式之工厂模式与单例模式本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下:设计模式简单说应对某类问题而设计的解决方式工厂模式:应对需求创建相应的对象class factory{function __construct($name){if(file_exists('./'.$name.'.class.php')){return new $name;}...

weixin_35509069的博客 229

php实现单例模式类singletonv,php设计模式 singleton (单例模式)

25种php设计模式,你全都知道吗?下面用代码介绍单例模式(singleton模式)

weixin_29968283的博客 97

PHP 设计模式 单例模式

PHP 设计模式 单例模式

随枫刃 167

PHP设计模式之:单例模式

单例模式(职责模式): 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务; 单例类: 1、构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化; 2、拥有一个保存类的实例的静态成员变量 3、拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单

longjef的博客 296

mysql 单态设计模式_PHP设计模式之单例模式

PHP设计模式之单例模式1.单例模式在设计模式中是属于创建型的类型2.单例模式可以使一个程序处理请求过程中,只创建一次,减少类的频繁实例化3.单例模式不可以在外部实例化,也就是构造方法要设置为私有的方法4.单例模式只需要向外部提供一个公开的静态方法接口,给外部调用者使用5.单例模式要提供一个私有的克隆方法,防止外部克隆产生一个新的副本6.单例模式需要提供一个私有的防止类序列化的方法,以免产生一个新...

weixin_35252964的博客 178
上一篇: php与设计模式-工厂模式
下一篇: php与设计模式-七大原则
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值