我與需要接收好幾部影片,在特定網頁上顯示它們的應用程序的工作,目前這些視頻也只能是來自YouTube,由於不允許其他供應商的實現,因爲代碼來獲取視頻數據作爲預覽圖像直接放置在負責顯示視頻的View Helper中。這是一個很好的策略模式用例嗎?
我想改變這個結構以便於添加新的提供者,比如Vimeo,並且我認爲策略模式會是理想的,我會在我的View Helper中使用方法setVideoUrl(string $url)
,這個方法會調用方法getProviderStrategy(string $url)
從class VideoProviderFactory
,這個工廠類會再返回,如果有的話,戰略類,實現了interface VideoProvider
,對於視頻網址的提供者。
您認爲如何?這是對的?我需要改變一些東西?
細節:我最初考慮將切換選擇策略直接進入View Helper,但在看完這個問題後:I Strategy Pattern with no 'switch' statements?我看到我錯了,於是class VideoProviderFactory
出現了。
好的。我唯一不明白的是爲什麼我們需要中間VideoProviderMatcher接口。無法將該功能作爲VideoProvider類的一部分來實現嗎? – hennes 2012-04-16 05:55:42
@hennes國際海事組織,VideoProviderMatcher使URL的理解更加抽象。然後,匹配器可以接受實現,以基本上過濾出各種條件下的URL,例如url/url的一部分。 – Nrj 2012-04-16 06:22:27
好的,這是一個很好的觀點。感謝澄清。 – hennes 2012-04-16 06:39:21