欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)模式和不常見(jiàn)的多例(Multiton)模式控制著應(yīng)用程序中類的數(shù)量。如模式名稱,單例只能實(shí)例化一次,只有一個(gè)對(duì)象,多例模式可以多次實(shí)例化。

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

該單一根對(duì)象沒(méi)有封裝任何系統(tǒng)功能。多數(shù)情況下,會(huì)使單元測(cè)試和調(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)論