资讯专栏INFORMATION COLUMN

PHP设计模式(四)单例模式(Singleton)

余学文 / 1542人阅读

摘要:一什么是单例设计模式单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。

一、什么是单例设计模式

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。

二、单例模式的技巧

利用$_instance私有变量来保存类的唯一实例化对象;

设计一个getInstance对外公开的函数,可以获取类唯一实例;

防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;

三、单例模式的应用场景

  数据库设计,我们发送一次请求,可能会需要访问不同的表,那么如果每次访问都 new 一个实例,那必然会造成资源的浪费,所以使用单例模式,可以很好的节省资源。

单例类
class DataBase
{
    /**
     * 静态成品变量,保存全局实例
     */
    private static $_instance = null;

    /**
     *  测试变量,存储日志信息
     */
    private static $_msg = null;

    /**
     * 私有构造方法,防止外界实例化对象
     */
    private function __construct()
    {
        $connect = "连接数据库操作";
    }

    /**
     * 私有化克隆方法,防止外键克隆对象
     */
    private function __clone()
    {
    }

    /**
     * 静态方法,外界获取实例的唯一接口
     * @return Object 返回对象唯一实例
     */
    public static function getInstance()
    {
        if (!self::$_instance){
            self::$_instance = new DataBase();
            self::$_msg = "这是一个新对象" . "
"; }else{ self::$_msg = "这个是一个旧的对象" . "
"; } return self::$_instance; } public function log() { echo self::$_msg; } }
客户端测试代码
    $dbA = DataBase::getInstance();
    $dbA->log();

    $dbB = DataBase::getInstance();
    $dbB->log();

    $dbC = DataBase::getInstance();
    $dbC->log();
输出结果:

这是一个新对象

这个是一个旧的对象

这个是一个旧的对象

“对象”?,程序员怎么可能有对象!~

参考 系列源地址

WilburXu/design_pattern

系列目录

PHP 设计模式概述

PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

PHP设计模式(二)工厂方法模式(Factory Method)

PHP设计模式(三)抽象工厂模式(Abstract Factory)

PHP设计模式(四)单例模式(Singleton)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29503.html

相关文章

  • php设计模式之实现单例模式(singleton)

    摘要:单例模式用于为一个类生成一个唯一的对象。作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。 单例模式(Singleton):用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系...

    garfileo 评论0 收藏0
  • PHP 设计模式概述

    摘要:创建型模式主要有以下五种简单工厂模式和工厂方法模式抽象工厂模式单例模式建造者模式原型模式在设计模式一书中将工厂模式分为两类工厂方法模式与抽象工厂模式。 一、 设计模式(Design pattern)是什么 设计模式是一套被反复使用、多数人知晓、经过分类编目的代码设计的经验总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、 为什么会有设计模式 在软件开发过...

    IntMain 评论0 收藏0
  • PHP设计模式-Singleton 单例(单元素)模式

    摘要:大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打单例单元素模式实现来自说明通过提供对自身共享实例对访问,单元素单例设计模式用于限制特定对象只能被创建一次。 整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打 /** * Singleton 单例(单元素)模式实现 * -----...

    omgdog 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<