消除 if-else 之为 Enum 添加行为实现策略模式
场景描述
Java 提供枚举类给了开发者更可读的代码实现,我们可以将很多字段作为枚举类型。并且赋予枚举类行为,可以省略掉根据枚举类判断而实现不同行为的众多 if...else...
如下是根据参数而下载不同类型的文件的枚举代码,给每个枚举类型添加了响应的代码
复制代码
 调用方可以免除掉 if...else 只需要获取到下载的类型来执行不同的写入。
复制代码
 本文字数:493 字
阅读完需:约 2 分钟
Java 提供枚举类给了开发者更可读的代码实现,我们可以将很多字段作为枚举类型。并且赋予枚举类行为,可以省略掉根据枚举类判断而实现不同行为的众多 if...else...
如下是根据参数而下载不同类型的文件的枚举代码,给每个枚举类型添加了响应的代码
public enum DownloadFileType {    CSV {        @Override        public void writeToLocal() {            exportUtil.writeCsv();        }    },    EXCEL {        @Override        public void writeToLocal() {            exportUtil.writeExcel();        }    };
    public abstract void writeToLocal();
    public static DownloadFileType of(String fileType) {        return Arrays.stream(DownloadFileType.values())                .filter(type -> type.toString().equals(fileType.toUpperCase(Locale.ROOT)))                .findFirst()                .orElse(EXCEL);    }}
调用方可以免除掉 if...else 只需要获取到下载的类型来执行不同的写入。
//write to local tmp dir//fileType: "excel" or "csv"DownloadFileType.of(fileType).writeToLocal();

不积跬步,无以至千里 2018.06.14 加入
一名没多少料的代码搬运工,升级打怪中。

促进软件开发及相关领域知识与创新的传播
 ArchSummit全球架构师峰会 3月24-25日
ArchSummit全球架构师峰会 3月24-25日 PCon全球产品创新大会 3月25-26日
PCon全球产品创新大会 3月25-26日 DIVE全球基础软件创新大会 3月25-26日
DIVE全球基础软件创新大会 3月25-26日 ArchSummit全球架构师峰会 4月24-25日
ArchSummit全球架构师峰会 4月24-25日 QCon全球软件开发大会 5月12-14日
QCon全球软件开发大会 5月12-14日 GMTC全球大前端技术大会 6月10-11日
GMTC全球大前端技术大会 6月10-11日 ArchSummit全球架构师峰会 7月15-16日
ArchSummit全球架构师峰会 7月15-16日 PCon全球产品创新大会 8月19-20日
PCon全球产品创新大会 8月19-20日 京公网安备 11010502039052号
京公网安备 11010502039052号 
    


评论