php實現設計模式 之服務定位器模式

2021-09-16 20:04:26 字數 922 閱讀 4530

什麼是服務定位器

服務定位器(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類中建立網路請求服務類和資料庫請求服務類的例項,然後才能使用服務...