什麼是服務定位器
服務定位器(service locator)他知道如何定位(建立或者獲取)乙個應用所需要的服務,服務使用者在實際使用中無需關心服務的實際實現。
有什麼作用
實現服務使用者和服務的解耦,無需改變**而只是通過簡單配置更服服務實現。
uml圖示
**示例
class servicelocator
public function __get($id)
// another implement
}public function get($id)
if (isset($this->_definitions[$id]))
return $object;
}throw new exception("無法定位服務")
}public function set($id,$definition,$share = false)
unset($this->_services[$id]);
$this->_shared[$id] = $share;
if (is_string($definition))
if (is_object($definition) || is_callable($definition, true))
if (is_array($definition))
}throw new exception("服務新增失敗");}}
感謝文中****網路 PHP 依賴注入,注入容器和服務定位器
考慮乙個問題,如果乙個web應用需要乙個日誌服務,日誌服務可以是文字,資料庫或者郵件的形式,而且日誌需要將獲取的資訊格式化指定的形式。應用可以根據需要,任意切換日誌服務是文字還是數 據庫還是郵件。如果以傳統的方式,日誌記錄的 類似下面的形式 class logger public function ...
php實現設計模式之 直譯器模式
直譯器模式 給定一種語言,定義它文法的一種表示,並定義乙個直譯器,該直譯器利用該表示來解釋語言中的句子 class expression class expressionnum extends expression class expressioncharater extends expressio...
設計模式 伺服器定位設計模式講解
5.設計模式缺點 在專案中有很多這樣的場景 某類classa依賴於服務servicea和服務serviceb 比如某個presenter類 資料管理類 中需要網路請求獲取資料,也需要從資料庫獲取資料,這個時候,就需要在presenter類中建立網路請求服務類和資料庫請求服務類的例項,然後才能使用服務...