PHP 设计模式之单例模式
2023-03-07 09:46:06 时间
1. 单例模式
单例:一个类最多只能有一个对象,目的:保护资源的唯一性
单例模式(Singleton):通过代码实现单例的设计思路、一个类最多只能产生一个对象的设计思想
2. 三私一公
单例模式设计规范:三私一公
私有化构造方法: 禁止在类外无限实例化对象
私有化克隆方法: 禁止对象无限克隆对象
私有化静态属性: 保存类内部实例化得到的对象
公有化静态方法: 允许外部通过调用类内部方法获取对象
a. 私有化构造方法
对象的产生方式之一是通过实例化类,而在类外部实例化是一种不可控行为,所以应该禁止类在外部被实例化
类在外部实例化本质上是在类外部调用了构造方法,
私有化构造方法可使其不能在类外部掉用构造方法,也就是实现了禁止类在外部被实例化
b. 公有静态方法
私有化构造方法只是不能在类外部实例化类,但是可以在类里面实例化,没有对象,还想要访问类中的方法,所以需要定义一个公有静态方法,用于获取类的实例(对象)
c. 私有化静态属性
提供公有静态方法后,无限调用静态方法依然可以得到多个对象。
d. 私有化克隆方法
在类外部可以通过克隆对象来产生新的对象,私有化克隆方法可实现禁止类在外部被克隆
3. 单例模式设计类
/**
* 单例模式设计
*/
class Singleton
{
/**
* 私有静态属性
* 保存产生的对象
*/
private static $obj;
/**
* 私有化构造方法
* 禁止类在外部实例化
*/
private function __construct(){}
/**
* 类的入口
* 用于获取类的实例
*/
public static function getInstance()
{
if (self::$obj instanceof self) {
return self::$obj;
} else {
self::$obj = new self;
return self::$obj;
}
}
/**
* 私有化克隆方法
* 禁止类的实例在外部被克隆
*/
private function __clone(){}
}
相关文章
- 手把手教你用低代码30分钟实现ChatGPT AI机器人
- WGCLOUD监控系统如何监测主机CPU温度指标「建议收藏」
- 迁移到云平台时如何确保成功过渡
- 数据结构-Hash常见操作实践
- 一般用什么云服务器好呢
- 数学建模比赛超全整理【数学建模有哪些比赛?】【全网最全数模整理】
- 编写干净代码的 9 条必须知道的规则
- 买一个云服务器要多少钱一个月
- 云服务器购买需要注意些什么东西
- SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可视化
- php网站买哪个云主机
- 生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素|附代码数据
- 飞天加速计划·高校学生在家实践·续费任务—使用体验
- Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据
- 我和阿里云
- R语言LME4混合效应模型研究教师的受欢迎程度|附代码数据
- 2-R语言数据结构
- 测试用例
- 学习阿里云
- 泼辣修图2023软件网页版Polarr下载