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

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

其目的是:

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

应用场景:

  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 方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,049评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,812评论 25 709
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,304评论 4 34
  • 眼泪, 打破水面的顷刻, 世界如同黑白胶带的电影, 戛然断裂, 静音下的世界, 一如晗罹里那个消失了光,声音,呼吸...
    清明檀邪阅读 197评论 0 1
  • 不知道标题写啥..直接上错误好了 今天在Pods里想使用下传说中的Facebook的FBMemoryProfile...
    冰冰大象阅读 236评论 0 1