「设计模式」PHP单例模式以及单例模式的使用案例
什么是单例模式?
单例模式(Singleton Pattern):一个类只允许创建一个对象(或者实例),而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法,这种设计模式就叫作单例设计模式,简称单例模式;单例模式是一种对象创建型模式。
单例模式是结构最简单的设计模式一,在它的核心结构中只包含一个被称为单例类的特殊类。
单例模式结构中只包含一个单例角色:
Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;
为了防止在外部对其实例化,将其构造函数设计为私有;
在单例类内部定义了一个Singleton类型的静态对象,作为外部共享的唯一实例。
单例模式的三个要点!!!
单例模式有三个要点:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例
为什么要使用单例?
1、处理资源访问冲突;
例如:往文件中打印日志的功能。
2、表示全局唯一类
从业务概念上,如果有些数据在系统中只应保存一份,那就比较适合设计为单例类。例如:唯一递增 ID 号码生成器。
实现方式
实现php的单例模式需要三个步骤:
* 1、一个静态成员变量,用来保存类;
* 2、为防止对象创建或者克隆,需要吧__construct和__clone声明为私有;
* 3、一个访问这个实例的公共的静态方法,通常为getInstance。
class single { private static $instance;//定义一个静态成员变量,用来保存类 private function __construct(){}//为防止对象创建,声明为私有 private function __clone(){}//为防止对象克隆,声明为私有 public static function getInstance() {//一个访问这个实例的公共的静态方法 if (empty(self::$instance)) { self::$instance = new single(); } return self::$instance; } }
单例设计模式使用案例:获取ID,一个全局唯一的id号码生成器就出现了;
class single { private $id = 0; private static $instance;//定义一个静态成员变量,用来保存类 private function __construct(){}//为防止对象创建,声明为私有 private function __clone(){}//为防止对象克隆,声明为私有 public static function getInstance() {//一个访问这个实例的公共的静态方法 if (empty(self::$instance)) { self::$instance = new single(); } return self::$instance; } public function getId() {//获取累加ID return $this->id++; } }
总结
实现php的单例模式需要三个步骤
* 一个静态成员变量,用来保存类。
* __construct和__clone声明为私有,防止创建或者克隆。
* 一个静态方法,通常为getInstance,用来访问这个实例。
更多关注PHP设计模式
「设计模式」PHP单例模式以及单例模式的使用案例:https://www.yzdlm.com/Singleton.html
作者:大脸猫 分类: 大脸猫PHP博客 设计模式
上一篇:PHP丨PHP基础知识之流程控制WHILE循环「理论篇」 下一篇:面向对象设计原则
评论
乖,登录后才可以留言!
QQ一键登录