近几天,组织走查产品代码,由于毕业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()
}
}