1

我们的系统希望我们的客户将他们的帐户与不同的社交媒体网站链接,如 youtube、vimeo、facebook、myspace 等。

我们想给用户的好处之一是传输、更新和删除他们上传到我们网站的文件,并将它们传输到上述社交媒体网站。这些文件可以是视频、图像或音频。

我们开始考虑使用策略模式,因为所有这些站点共享一个共同的过程(身份验证、连接、使用 API 传输/编辑/删除文件),但我们很快意识到它可能无法像我想要的那样工作使用特定于每个服务的一些扩展功能(例如:将 youtube 视频与频道相关联,或将图像上传到 facebook 上的特定相册,等等……)

我的问题是,对于这种情况,最好的结构设计模式是什么?

4

1 回答 1

1

我实际上会将您尝试将用户连接到的服务拆分为以下组:

  • 视频服务
  • 照片服务
  • 即时通讯服务等

对于每个组,您可能有一个要实现的通用接口。当然,每个社交媒体网站都可以有多个界面。此外,我会为这些界面添加一个特殊的扩展点,允许您重用每个站点特定的内容。

例如,在标准形式中,您将使用此方法:

videoService.upload(chanel, playlist, file) 

如果站点支持您无法放入通用接口的特殊功能,则使用扩展属性调用它:

if (videoService.getSiteName() == "YouTube") {
   videoService.upload(chanel, playlist, file, extendedProperties) 
}
于 2010-03-31T17:09:08.087 回答