你的位置:首页 > ASP.net教程

[ASP.net教程]PHP设计模式(四)单例模式(Singleton For PHP)


今天讲单例设计模式,这种设计模式和工厂模式一样,用的非常非常多,同时单例模式比较容易的一种设计模式。

 

一、什么是单例设计模式

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

二、单例模式的技巧

  1. 利用$_instance私有变量来保存类的唯一实例化对象;
  2. 设计一个getInstance对外公开的函数,可以获取类唯一实例;
  3. 防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;

 三、单例模式的应用场景

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

 

单例类:

/** * Singleton pattern */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 = "这是一个新对象" . "<br>";    }else{      self::$_msg = "这个是一个旧的对象" . "<br>";    }    return self::$_instance;  }  public function log()  {    echo self::$_msg;  }}

客户端测试代码:

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

输出结果:

  这是一个新对象
  这个是一个旧的对象
  这个是一个旧的对象

 

 别到“对象”别说了,程序员怎么可能有对象!~

 

如果有什么讲的疑问或者讲的不好的地方,欢迎大家留言。

 




德国旅游攻略大全德国旅游攻略去德国旅游要多少钱德国旅游报价德国旅游团报价汤江岩户外拓展基地简介?诸暨汤江岩户外拓展基地介绍? 泉城欧乐堡梦幻世界门票优惠政策?齐河欧乐堡梦幻世界优惠票价? 汤江岩户外拓展基地在哪里?诸暨汤江岩户外拓展基地具体位置? 泉城欧乐堡梦幻世界儿童票多少钱?齐河欧乐堡梦幻世界儿童门票价格? 桂林九月份天气如何?穿什么衣服好? 2015年国庆去香港玩怎么样?香港国庆会不会很多人? 厦门鳌园怎么样?有什么好玩的? 阳朔九月份天气如何?穿什么衣服好? 香港中环购物吃什么? 香港打折季是什么时候? 香港铜锣湾希慎广场怎么去?具体地址? 香港铜锣湾到东荟城怎么去? 《下一站说爱你》的拍摄地在哪里?讲述了什么故事? 香港的治安好吗?遇到危险,要怎样报警? 《初恋这件小事》的拍摄地在哪里?拍摄地附近有什么景点? 在泰国的中国人会看泰国剧吗?泰国人一般喜欢看什么样的电视剧和电影? MAX3162ECAI Datasheet MAX3162ECAI Datasheet MAX3164CAI Datasheet MAX3164CAI Datasheet MAX3166EEP Datasheet MAX3166EEP Datasheet 哈尔滨到香港旅游报价 哈尔滨到香港旅游报价 哈尔滨到香港旅游报价 山西省香港旅游报价 山西省香港旅游报价 山西省香港旅游报价 成都香港游报价 成都香港游报价 成都香港游报价