我们的系统希望我们的客户将他们的帐户与youtube,vimeo,facebook,myspace等不同的社交媒体网站相关联。
我们希望为用户提供的好处之一是传输,更新和删除他们上传到我们网站的文件,并将其传输到上述社交媒体网站。这些文件可能是视频,图像或音频。
我们开始考虑使用策略模式,因为所有这些网站都共享一个共同的过程(身份验证,连接,使用API来传输/编辑/删除文件),但我们很快意识到它可能不适合我可能想要使用某些特定于每项服务的扩展功能(例如:将YouTube视频与频道关联,或将图像上传到Facebook上的特定相册,以及更多......)
我的问题是,用于此场景的最佳结构设计模式是什么?
答案 0 :(得分:1)
我会实际上将您尝试将用户连接到的服务分成以下组:
对于每个组,您可能拥有一个将要实现的通用接口。当然,每个社交媒体网站都可以有多个界面。此外,我还会为那些允许您重复使用特定于每个站点的接口的接口添加一个特殊的扩展点。
例如,在标准格式中,您将使用此方法:
videoService.upload(chanel, playlist, file)
如果网站支持您无法放入通用界面的特殊内容,请使用扩展属性调用它:
if (videoService.getSiteName() == "YouTube") {
videoService.upload(chanel, playlist, file, extendedProperties)
}