最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php設(shè)計(jì)模式之單例、多例設(shè)計(jì)模式的應(yīng)用分析

 更新時(shí)間:2013年06月30日 12:37:04   作者:  
本篇文章是對(duì)php設(shè)計(jì)模式中的單例與多例設(shè)計(jì)模式的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
單例(Singleton)模式和不常見的多例(Multiton)模式控制著應(yīng)用程序中類的數(shù)量。如模式名稱,單例只能實(shí)例化一次,只有一個(gè)對(duì)象,多例模式可以多次實(shí)例化。

基于Singleton的特性,我們經(jīng)常用Singleton配置應(yīng)用程序并定義應(yīng)用程序中可能隨時(shí)訪問的變量。但有時(shí)并不推薦使用Singleton,因?yàn)樗闪艘粋€(gè)全局狀態(tài)且

該單一根對(duì)象沒有封裝任何系統(tǒng)功能。多數(shù)情況下,會(huì)使單元測試和調(diào)試變得困難。讀者根據(jù)情況自行決定。
代碼示例:
復(fù)制代碼 代碼如下:

<?php
class SingletonExample{
    private function __construct(){}//防止直接實(shí)例化
  public static function getInstance(){ //不與任何對(duì)象有關(guān)聯(lián)
 static $instance=null;    //調(diào)用此函數(shù)的所有代碼共享該變量,不必要讓其是類的靜態(tài)變量
 if($instance==null){
   $instance=new SingletonExample();
     }
   return $instance;
  }
}
$obj1=SingletonExample::getInstance();
$obj2=SingletonExample::getInstance();
var_dump($obj1===$obj2);// true   是同一個(gè)實(shí)例
?>

Multiton與singleton相似,不同的是后者需要getInstance()函數(shù)傳遞關(guān)鍵值。
對(duì)于給定的關(guān)鍵值只會(huì)存在唯一的對(duì)象實(shí)例,如果有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)擁有唯一的表識(shí)符,且各個(gè)節(jié)點(diǎn)在某單次執(zhí)行(如cms里的節(jié)點(diǎn))可能出現(xiàn)多次,那么就可以用Multiton模式實(shí)現(xiàn)這些節(jié)點(diǎn)啊,Multiton節(jié)省內(nèi)存,并確保同一個(gè)對(duì)象的多個(gè)實(shí)例不發(fā)生沖突.
示例:
復(fù)制代碼 代碼如下:

 <?php
 class MultitonExample{
 private function __construct(){}//防止直接實(shí)例化

   public static function getInstance($key){
  static $instance=array();   
  if(!array_key_exists($key,$instance)){
    $instance[$key]=new SingletonExample();
      }
    return $instance($key);
   }
 };
 ?>

相關(guān)文章

最新評(píng)論

涿鹿县| 浮梁县| 镇康县| 色达县| 孟连| 新龙县| 佳木斯市| 田东县| 九台市| 东乌珠穆沁旗| 郎溪县| 进贤县| 太仆寺旗| 开平市| 临武县| 万载县| 尤溪县| 定南县| 贵港市| 乌审旗| 阿克苏市| 罗甸县| 海盐县| 读书| 鹿邑县| 吉隆县| 即墨市| 阿克苏市| 年辖:市辖区| 湟中县| 梁平县| 乐东| 华池县| 新巴尔虎左旗| 郸城县| 山丹县| 逊克县| 宜宾县| 和顺县| 比如县| 沈丘县|