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

Using Strategy Pattern for supporting uploading file from multiple sources

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

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

我的问题是:这是设计模式的良好实践吗?有没有更好的方法来模拟这个问题?

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

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 的更多实现。