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

本文介绍了如何使用Java的枚举类和方法重载,实现根据不同文件类型自动执行写入操作,避免if-else条件判断,提高代码可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景描述

Java提供枚举类给了开发者更可读的代码实现,我们可以将很多字段作为枚举类型。并且赋予枚举类行为,可以省略掉根据枚举类判断而实现不同行为的众多if…else…

如下是根据参数而下载不同类型的文件的枚举代码,给每个枚举类型添加了对应的代码

public enum DownloadFileType {
    CSV {
        @Override
        public void writeToLocal() {
        	//写入csv格式实现
            exportUtil.writeCsv();
        }
    },
    EXCEL {
        @Override
        public void writeToLocal() {
        	//写入excel格式实现
            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();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值