【单例模式中主要角色】
Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类方法。负责创建它的唯一的实例。
【单例模式的优点】
1、对唯一实例的受控访问
2、缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间
3、允许对操作和表示的精华 单例类可以有子类。而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
4、允许可变数目的实例(多例模式)
5、比类操作更灵活
【单例模式适用场景】
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
2、当这个唯一实例应该是通过子类化可扩展的。并且用户应该无需更改代码就能使用一个扩展的实例时。

代码

  1. /*
  2. *单例模式
  3. */
  4. class singleton{
  5. /*
  6. * 静态成品变量 保存全局实例
  7. */
  8. private static $_instance = NULL;
  9. /*
  10. * 私有化构造方法 保证外界无法直接实例化
  11. */
  12. private function __construct(){
  13. }
  14. /*
  15. * 静态工厂方法 返回此类的唯一实例
  16. */
  17. static function getInstance($class){
  18. if(is_null(self::$_instance)){
  19. self::$_instance = new $class();
  20. }
  21. return self::$_instance;
  22. }
  23. /*
  24. * 防止用户克隆实例
  25. */
  26. public function __clone(){
  27. //取消PHP默认的克隆操作
  28. }
  29. }
  30. class People{
  31. function sayHi(){
  32. return 'Hello!';
  33. }
  34. }
  35. echo singleton::getInstance('People')->sayHi();
  36. ?>

PHP模式-单例模式相关推荐

  1. 《JAVA与模式》26天系列—第12天—享元模式=单例模式+工厂模式+合成模式

    享元模式=单例模式+工厂模式+合成模式 单例模式: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 结构图: 注意多线程的单例. package com.bankht.Flyweight.co ...

  2. 2023-01-26 JS设计模式-单例模式:单例模式的原理和实现,懒汉模式和饿汉模式,单例模式实现登录框

    文章目录 1.什么是单例模式? 介绍 特点 结构 2.如何实现一个单例模式? 思路 实现代码 3.单例模式的优缺点 4.懒汉模式和饿汉模式 懒汉模式:一开始不会实例化,什么时候用才new出来实例化 饿 ...

  3. 自定义注解(三)支付渠道:消除if-策略模式+工厂模式+单例模式

    自定义支付注解=消除if:策略模式+工厂模式+单例模式 代码取景,知识来源于视频<云析学院[路飞老师]-一次学习终身受用-如何正确使用设计模式写出优雅的代码> 1.定义注解标签 PayCh ...

  4. 10.Java设计模式 工厂模式,单例模式

    Java 之工厂方法和抽象工厂模式 1. 概念 工厂方法:一抽象产品类派生出多个具体产品类:一抽象工厂类派生出多个具体工厂类:每个具体工厂类只能创建一个具体产品类的实例. 即定义一个创建对象的接口(即 ...

  5. 创建型模式—单例模式

    原文作者:C语言中文网 原文地址:单例模式(单例设计模式)详解 目录 1.单例模式的定义与特点 单例类对外提供一个访问该单例的全局访问点. 2.单例模式的优点和缺点 3.单例模式的应用场景 4.单例模 ...

  6. 创建型模式——单例模式

    一. 实验目的与要求 1.练习使用单例模式.设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点. 2.实验结束后,对相关内容进行总结. 二.实验内容 1.模式应用场景说明 在山区或者边远地区火车 ...

  7. 创造型模式——单例模式

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建自己的对 ...

  8. 策略模式,工厂模式,单例模式编写身份证的验证算法

    策略模式:它定义算法家族,分别封装起来,让他们之间互相替换,此模式让算法的变化,不会影响使用算法的客户. 1 /// <summary> 2 /// 策略模式 3 /// </sum ...

  9. Java经典设计模式-创建型模式-单例模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JV ...

最新文章

  1. 打包图片上传cdn_紧抓5G新时代机遇 又拍云创新发展CDN行业
  2. sqlmap os shell解析
  3. c++类对象的创建方式
  4. struct.error: cannot convert argument to integer解决办法
  5. java学习(152):字节缓冲输出流
  6. ffmpeg添加到环境变量_Windows + MSVC环境编译ffmpeg
  7. 如何免费的让网站启用HTTPS
  8. 【转】单元测试基础知识
  9. Ajax ControlToolkit - AnimationExtender Action语法(笔记)
  10. 解决webpack vue 项目打包生成的文件,资源文件均404问题
  11. C#基础概念 代码样例
  12. acc 蓝牙_蓝牙音频传输格式:ACC,SBC,APTX和LDAC
  13. python画布组件_Python Tkinter 画布(Canvas)
  14. Oracle 11g 修改表的所属表空间
  15. .net平台SqlSuger学习之旅——1、安装SqlSugar
  16. macOS 安装 aria2 下载 BitTorrent 替代迅雷
  17. Shiro logout 302重定向,shiro 302解决方案
  18. run和start区别
  19. Mac上安装瓦力之Docker安装的一些小坑
  20. 电气工程系毕业设计大全

热门文章

  1. 第一个发布成功的UI组件库
  2. openCV简易人脸考勤
  3. 苹果电脑MACbookAir快捷键大全
  4. Spring集成Hibernate5_03-HibernateDaoSupport
  5. 笔记本计算机排名2015,2015性价比高的笔记本电脑排行榜
  6. python 中的“_,“有什么用途
  7. LC振荡电路L和C 参数越小 频率越高
  8. 实践练习2:手动部署 OceanBase 集群
  9. mac性能比服务器好,性能上再次交锋 三大最新OS测试大比拼
  10. 合并后的58赶集为何驶入新的赛道?