if多了怎么解决,模式来一个
2024-04-10 03:10:25  阅读数 648

近几天,组织走查产品代码,由于毕业1-3年的同事居多,发现一个共性问题,方法里面的判断太多,代码可读性不强,维护性差

针对共性问题,先解读了这种写法的利弊,然后讲解了下常见的设计模式比如策略、工厂。

这边分享下可以尝试的做法,可以解决代码可读性,维护性,扩展性,单一职责方面的困扰

假设有一个场景,文件上传到服务器,上传方式包含ftp,sftp,http等

常规写法,写个类,写个方法把各种上传的代码捆在一起,好点的可能还会分几个子方法。如下图所示,


常见模式


class UpLoadUtil{

        public void upload(){

          if sftp

                uploadBySftp

          if ftp

              uploadByFtp

          if http

              uploadByHttp

      }

}

换个新鲜的写法,抽象一个接口类,然后定义对应的实现方式,然后编写个工厂,策略选择对应的实现方式,如图


某种模式

Interface IFileUpload{

      upload();

}

Class HttpFileUploadImpl implement IFileUpload{

  upload(){

    }

}

Class StpFileUploadImpl implement IFileUpload{

  upload(){

    }

}

class FileUpLoadFactory{

      static IFileUploadupload(uploadMode){

            Class<?> clazz = Class.forName("******"+uploadMode+"FileUploadImpl");

          return (IFileUpload) clazz.newInstance()

    }   

}