前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 设计模式之单例模式

PHP 设计模式之单例模式

作者头像
很酷的站长
发布2023-02-18 10:12:01
6680
发布2023-02-18 10:12:01
举报
文章被收录于专栏:站长的编程笔记
PHP 设计模式之单例模式
PHP 设计模式之单例模式
1. 单例模式

单例:一个类最多只能有一个对象,目的:保护资源的唯一性

单例模式(Singleton):通过代码实现单例的设计思路、一个类最多只能产生一个对象的设计思想

2. 三私一公

单例模式设计规范:三私一公

代码语言:javascript
复制
私有化构造方法: 禁止在类外无限实例化对象
私有化克隆方法: 禁止对象无限克隆对象
私有化静态属性: 保存类内部实例化得到的对象
公有化静态方法: 允许外部通过调用类内部方法获取对象

a. 私有化构造方法

代码语言:javascript
复制
对象的产生方式之一是通过实例化类,而在类外部实例化是一种不可控行为,所以应该禁止类在外部被实例化
类在外部实例化本质上是在类外部调用了构造方法,
私有化构造方法可使其不能在类外部掉用构造方法,也就是实现了禁止类在外部被实例化

b. 公有静态方法

代码语言:javascript
复制
私有化构造方法只是不能在类外部实例化类,但是可以在类里面实例化,没有对象,还想要访问类中的方法,所以需要定义一个公有静态方法,用于获取类的实例(对象)

c. 私有化静态属性

代码语言:javascript
复制
提供公有静态方法后,无限调用静态方法依然可以得到多个对象。

d. 私有化克隆方法

代码语言:javascript
复制
在类外部可以通过克隆对象来产生新的对象,私有化克隆方法可实现禁止类在外部被克隆
3. 单例模式设计类

代码语言:javascript
复制
/**
* 单例模式设计
*/
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(){}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 单例模式
  • 2. 三私一公
  • 3. 单例模式设计类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档