[英]How to implement the strategy pattern in a symfony2 bundle?
假設我們有一個Symfony捆綁包,其中包含一個服務,該服務的依賴項由接口定義(策略模式)。 我也有在同一個包中定義的接口的幾種實現(即策略)。 每種策略可能還具有各種其他依賴性,需要進一步配置。 因此,捆綁包中的我的services.yml可能如下所示:
services:
my_service:
class: MyBundle\Services\MyService
arguments: ['@my_strategy']
my_strategy_service_1:
class: MyBundle\Services\MyStrategyService1
my_strategy_service_2:
class: MyBundle\Services\MyStrategyService2
argument: [@my_memcache]
我可以在應用程序的config.yml中選擇實現。
services:
my_strategy:
alias: my_strategy_service_2
my_memcache:
class: Memcached
calls:
- [ addServer, [%memcache_host%, %memcache_port%] ]
讓我們堅持這個例子,並更改實現。 如果我在應用程序中寫config.yml:
services:
my_strategy:
alias: my_strategy_service_1
不幸的是,即使這次沒有使用它,但僅在包中定義了它,仍然需要我定義“ my_memcache”服務。 我該如何處理呢? 僅當“ my_strategy_service_2”確實使用時,我可以強制檢查其依賴性嗎?
通常,我在上下文和策略使用之間實現“注冊”:
希望很清楚
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.