PHP -- 单例模式,代码演示

本文深入解析单例模式,一种确保类只有一个实例,并提供全局访问点的设计模式。文章详细阐述了单例模式的四个核心要素:私有构造函数、静态成员变量、公共静态方法及防克隆函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式: 单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。

所有的单例模式至少拥有以下三个必须和一个必要元素:

1

必须拥有一个private的构造函数

2

必须拥有一个保存类的实例的静态成员变量

3

必须拥有一个访问这个实例的公共的静态方法

4

必要拥有一个防止克隆的函数

单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。


下面是代码演示:

class people
{
    //静态成员变量
    static private $instance;
    private $config;
    // private的构造函数
    private function __construct($config){
        $this->config = $config;
    }
    // 防克隆函数
    private function __clone(){
        // TODO: Implement __clone() method.
    }
    // 静态方法
    static public function getConfig($config){
        if (!self::$instance instanceof self) {
            self::$instance = new self($config);
        }
        return self::$instance;
    }
    public function getName(){
        echo $this->config;
    }
}

 运行以下代码:

$a = people::getConfig(1);
$a->getName();
echo "<br/>";
$b = people::getConfig(3);
$b->getName();

网页会显示:

$a创建对象后,参数是1 ;

$b没有创建对象,而是直接使用$instance保存的唯一对象,所以输出的参数并没有变为3。

参考资料:

https://www.cnblogs.com/yuyu1993/p/5576010.html

http://www.cnblogs.com/DeanChopper/p/4761253.html

https://www.cnblogs.com/wwjchina/p/7724271.html

欢迎补充!

千而の大狮子!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值