写点什么

消除 if-else 之为 Enum 添加行为实现策略模式

作者:topsion
  • 2022 年 2 月 16 日
  • 本文字数: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();
复制代码


用户头像

topsion

关注

不积跬步,无以至千里 2018.06.14 加入

一名没多少料的代码搬运工,升级打怪中。

评论

发布
暂无评论
消除if-else之为Enum添加行为实现策略模式