使用策略模式支持从多个来源上传文件

时间:2017-02-25 09:47:15

标签: design-patterns file-upload factory-pattern strategy-pattern system-design

我正在开发一个网络应用项目,需要我重构文件上传功能。我们的文件上传功能支持多种上传文件来源,例如 git repo nexus网址 zip文件,我们还希望支持更多内容,例如未来的力量。在当前实现中,应用程序具有多个端点来处理不同的方法,例如getNexusFile()getGitFile()getZipFile();在每种方法下,都有从指定源检索文件的实现。

我的想法是使用策略模式将所有这些方法合并到一个名为getUploadFile()的方法中。与战略模式一样, 算法可以在运行时选择,因此在指定正确的策略后,可以无差别地处理从不同来源上传的文件。对于每个来源,我都会为它制定策略。

我的问题是:设计模式是一个很好的做法吗?有没有更好的方法来模拟这个问题?

1 个答案:

答案 0 :(得分:2)

策略模式是解决此问题的有效方法。

Class SomeClass {
  private FileUploader fileUploader;
}

Interface FileUploader {
     public void uploadFile();
}

Class GitFileUploader implements FileUploader{
     public void uploadFile() {//Implementation for Git File Upload}
}

Class NexusFileUploader implements FileUploader {
     public void uploadFile() { //Implementation for Nexus }
}

您可以根据需要添加更多FileUploader的实现。