常见的设计模式

<?php

/**
 * 单例模式
 * 备注:PHP脚本执行完毕后会回收所有资源,所以PHP的单例模式仅在页面级别有效,它不像Java的单例可以常
 *       驻内存且可跨页面。如果使用Swoole那么就非常适合使用单例模式,尤其是数据库操作类,使用单例模
 *       式可以避免频繁使用new创建实例。
 */
class Singleton
{
    private static $instance; // 设置一个静态私有属性保存本类的实例
    private $name; // 设置一个私有属性用于测试

    /**
     * 私有化构造方法,禁止外部创建实例
     */
    private function __construct()
    {

    }

    /**
     * 私有化克隆方法,禁止复制实例
     */
    private function __clone()
    {

    }

    /**
     * 获取实例
     */
    public static function getInstance()
    {
        // 检查实例是否已创建
        if (!(self::$instance instanceof self)) {
            self::$instance = new self();
        }

        return self::$instance;
    }

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
}

$instance1 = Singleton::getInstance();
$instance2 = Singleton::getInstance();
$instance3 = Singleton::getInstance();

// 设置实例1的name属性值(实例2和实例3不设置)
$instance1->setName('张三');

echo "\$instance1的name属性值为" . $instance1->getName(); // 输出结果:$instance1的name属性值为张三
echo "\$instance2的name属性值为" . $instance2->getName(); // 输出结果:$instance2的name属性值为张三
echo "\$instance3的name属性值为" . $instance3->getName(); // 输出结果:$instance3的name属性值为张三

Copyright © 2024 码农人生. All Rights Reserved