使用策略模式支持从多个来源上传文件
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
的更多实现。
我正在开发一个 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
的更多实现。