Design patterns 社交媒体文件传输的最佳设计模式

Design patterns 社交媒体文件传输的最佳设计模式,design-patterns,file-transfer,social-media,Design Patterns,File Transfer,Social Media,我们的系统希望我们的客户将他们的账户链接到不同的社交媒体网站,如youtube、vimeo、facebook、myspace等 我们希望给用户的好处之一是传输、更新和删除他们上传到我们网站的文件,并将其传输到上述社交媒体网站。这些文件可以是视频、图像或音频 我们开始考虑使用策略模式,因为所有这些站点都共享一个公共流程(身份验证、连接、使用API传输/编辑/删除文件),但我们很快意识到它可能不起作用,因为我可能希望使用特定于每个服务的一些扩展功能(例如:将youtube视频与频道关联,或将图像上传

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

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

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


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

我实际上会将您试图连接用户的服务分成以下几组:

  • 视频服务
  • 摄影服务
  • 即时通讯服务等
对于每个组,您可能都有一个将要实现的通用接口。当然,每个社交媒体站点都可以有几个接口。此外,我还将为这些接口添加一个特殊的扩展点,允许您重用每个站点特定的内容

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

videoService.upload(chanel, playlist, file) 
如果站点支持某些特殊的东西,而您无法将其放入公共接口,则使用扩展属性调用它:

if (videoService.getSiteName() == "YouTube") {
   videoService.upload(chanel, playlist, file, extendedProperties) 
}

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

  • 视频服务
  • 摄影服务
  • 即时通讯服务等
对于每个组,您可能都有一个将要实现的通用接口。当然,每个社交媒体站点都可以有几个接口。此外,我还将为这些接口添加一个特殊的扩展点,允许您重用每个站点特定的内容

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

videoService.upload(chanel, playlist, file) 
如果站点支持某些特殊的东西,而您无法将其放入公共接口,则使用扩展属性调用它:

if (videoService.getSiteName() == "YouTube") {
   videoService.upload(chanel, playlist, file, extendedProperties) 
}