【问题标题】:Using Strategy Pattern for supporting uploading file from multiple sources使用策略模式支持从多个来源上传文件
【发布时间】:2017-02-25 09:47:15
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 只有在SomeClass 对象的生命周期内没有修改具体的FileUploader 时才有意义。如果希望单个SomeClass 对象从不同来源上传不同的文件,则使用Factory MethodAbstract Factory 可能更合适。
    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 2015-11-12
    • 2017-03-13
    • 2013-01-07
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多