美文网首页
简述设计模式--单例模式

简述设计模式--单例模式

作者: Dingo_ | 来源:发表于2016-08-28 20:39 被阅读0次

单例模式是软件设计模式中最简单,使用频次最高的设计模式之一。

其目的是:

确保某一个类在系统中只有一个实例(对象)。

应用场景:

  1. PHP主要的是与数据库进行交互,需要大量的使用数据库操作类,使用单例模式可以避免大量的new 数据库类消耗系统资源。
  1. 某些应用中需要用一个类来加载配置信息,使用单例模式就会非常方便。
  2. 在一次页面请求中,便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。

代码实现

一般情况下的数据库操作类:
Database.php
<?php
class Database{
  //数据库连接操作
}
?>

index.php
<?php
class Index{
  $db = new Database();      //new出我们需要的数据库连接实例
}
?>

使用这种方式进行数据库连接,在每一个文件中都需要去new一个数据库实例,而实际中我们只需连接一次就可以了。所以这种方式造成了不必要的资源浪费。

使用单例模式
Database.php
<?php
class Database{ 
    protect $db;   
    //定义一个私有的构造方法
    private __construct(){
          
   }
   static public dataCo(){
      if(self::$db){
            return self::$db;
      }
      self::$db = new self();
      return self::$db
  }
}
?>

index.php
<?
php
class Index{ 
  $db = Database::dataCon();
}
?>

使用单例模式创建的数据库连接类,无论你在其他文件中实例多少个数据库连接实例,其实都是一个。

PHP创建工厂模式的步骤:

1.定义一个私有的构造方法。(使类在其他文件中不能通过New来实例化)

 private __construct(){ }

2.定义静态方法来实例化本身(在内部进行判断,如实例已经存在直接返 回,如不存在则new出本身并返回)

static public dataCo(){ 
  if(self::$db){ 
  return self::$db; 
  } 
  self::$db = new self(); 
  return self::$db 
}

3.通过静态方法实例化

$db = Database::dataCon();

其实在一般使用时为了防止对象被克隆还会添加一个__clone 方法。

相关文章

  • 23设计模式之一

    简述 一、设计模式的六大原则 二、23种设计模式 1.单例模式 懒汉式单例 饿汉单例 2.三种工厂模式 1>.简单...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • 设计模式(创建型模式)

    设计模式简述 创建型模式(共五种): 工厂方法模式、 抽象工厂模式、 单例模式、 建造者模式、 原型模式. 结构型...

  • python中OOP的单例

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

  • 单例

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

  • 设计模式 - 单例模式

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

  • 简述设计模式--单例模式

    单例模式是软件设计模式中最简单,使用频次最高的设计模式之一。 其目的是: 确保某一个类在系统中只有一个实例(对象)...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

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

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

  • python 单例

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

网友评论

      本文标题:简述设计模式--单例模式

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