我与需要接收好几部影片,在特定网页上显示它们的应用程序的工作,目前这些视频也只能是来自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