美文网首页PHP开发PHP经验分享
编程中的设计模式之单例模式

编程中的设计模式之单例模式

作者: phpworkerman | 来源:发表于2020-07-13 17:27 被阅读0次
介绍

单例模式是设计模式最简单的一种,属于创建型模式,该模式由以下三个特征:
1.单例类只能有一个实例。
2.单例类必须自己创建自己的唯一实例。
3.单例类必须给所有其他对象提供这一实例。

作用和应用场景

在一个请求的生命周期中,往往需要对同一个类进行多次操作,而如果频繁的去 new 实例化对象,只会更多的消耗资源。应用场景多见于数据库的连接、日志等模块。

单例连接数据库
<?php
class Client
{
  //设置静态属性用来存放实例化的类
  private static $instance = null;
  private $dbname          = 'test';
  private $username        = 'root';
  private $passwd          = 'root';
  private $host            = 'localhost';
  private $pdo             = null;
  //禁止类的外部实例化
  private function __construct()
  {
    $this->pdo = new PDO("mysql:host={$this->host};dbname={$this->dbname}",$this->username,$this->passwd);
  }
  //禁止克隆对象
  private function __clone(){}
  //静态方法可不通过实例化在类的外部调用
  public static function getInstance()
  {
    if(is_null(self::$instance)){
      self::$instance = new self();
    }   
    return self::$instance;
  }

  public function execSql($query = '')
  {
    $result = $this->pdo->exec($query);
    if($result){
        echo '执行成功';
    }else{
        echo '执行失败';
    }
  }
  
  public function selectSql($query = '')
  {
    $result = $this->pdo->query($query);
    return $result->fetchAll();
  }
}

$client = Client::getInstance();
$client->selectSql('select * from xxx');
总结

单列模式不光是对系统资源的节省,更是在一个类多处使用时提供了一致性。该模式在多线程时会有安全性的问题,但因为 PHP 是单线程语言,这个问题一般开发也不会关注到,不过 PHP 也有实现多线程的方式,就是安装 pthreads 扩展,这个留到以后的多线程学习时再进行扩展。

相关文章

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • 设计模式学习之单例模式

    设计模式之单例模式 1 什么是单例模式 在维基百科中单例模式定义为 单例模式,也叫单子模式,是一种常用的软件设计模...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 设计模式之单例模式

    设计模式是学习编程的必备的知识技能,在设计之初我们可以从最简单的单例模式入手。 那么什么是单例模式呢?单例模式长什...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • JAVA设计模式之单例模式

    JAVA设计模式之单例模式

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

网友评论

    本文标题:编程中的设计模式之单例模式

    本文链接:https://www.haomeiwen.com/subject/nawhcktx.html