熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

php設計模式之單例、多例設計模式的應用分析

2013-11-15 12:33:30  來源: PHP編程 
本篇文章是對php設計模式中的單例與多例設計模式的應用進行了詳細的分析介紹需要的朋友參考下  

  單例(Singleton)模式和不常見的多例(Multiton)模式控制著應用程序中類的數量如模式名稱單例只能實例化一次只有一個對象多例模式可以多次實例化

基於Singleton的特性我們經常用Singleton配置應用程序並定義應用程序中可能隨時訪問的變量但有時並不推薦使用Singleton因為它生成了一個全局狀態且

該單一根對象沒有封裝任何系統功能多數情況下會使單元測試和調試變得困難讀者根據情況自行決定
代碼示例

復制代碼 代碼如下:
<?php
class SingletonExample{
private function __construct(){}//防止直接實例化
public static function getInstance(){ //不與任何對象有關聯
static $instance=null; //調用此函數的所有代碼共享該變量不必要讓其是類的靜態變量
if($instance==null){
$instance=new SingletonExample();
}
return $instance;
}
}
$obj=SingletonExample::getInstance();
$obj=SingletonExample::getInstance();
var_dump($obj===$obj);// true 是同一個實例
?>

  
Multiton與singleton相似不同的是後者需要getInstance()函數傳遞關鍵值
對於給定的關鍵值只會存在唯一的對象實例如果有多個節點每個節點擁有唯一的表識符且各個節點在某單次執行(如cms裡的節點)可能出現多次那麼就可以用Multiton模式實現這些節點啊Multiton節省內存並確保同一個對象的多個實例不發生沖突
示例

復制代碼 代碼如下:

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

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


From:http://tw.wingwit.com/Article/program/PHP/201311/21166.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.