【小威哥の设计模式系列-7】map-fuction模式

305 阅读1分钟

1:概述

在实际的业务编程中,其实很少涉及一些技术上的难点,大多时候大家还都是进行if-else的业务逻辑编程(特别是修补别人的shi山代码的时候),所以,怎么能优雅的实现if-else逻辑就是一个很值得去研究的点了,今天小威哥就给大家带来我自己非常喜欢用的map-fuction模式去实现复杂的if-else逻辑


2:过往实现方式

最朴素也最简单的实现方法就是直接if-else

public void deal(String param){
    /**
     * 执行处理
     */
    if(````){
    
    }esle{
    
    }
}
如果稍微复杂一些的话,我们还可以使用策略模式啊,责任链模式等的方法串联起来。

3:map-fuction模式

该模式最大的特点便是使用了map和函数式的方法去进行预先的定义

private static final Map<String, Function<String, String>> DEAL_MAP = Maps.newHashMap();

static {
    DEAL_MAP.put("one", param -> dealByOne(param));
    DEAL_MAP.put("two", param -> dealByTwo(param));
}

// 测试
public static void main(String[] args) {
    System.out.println(getResult("one", "paramStr"));
    System.out.println(getResult("two", "paramStr"));
    System.out.println(getResult("test", "paramStr"));
}

private static String getResult(String type, String param) {
    if (StringUtils.isBlank(type)) {
        return null;
    }
    Function<String, String> function = DEAL_MAP.get(type);
    //留一个拿不到方法的兜底方案
    if (null == function) {
        return null;
    }
    return function.apply(param);
}

private static String dealByOne(String param) {
    return param + "-dealOne";
}

private static String dealByTwo(String param) {
    return param + "-dealTwo";
}

4:总结

该模式是一种比较简单的设计模式,但是可以搭配其他的设计模式达到一个非常好的组好效果,非常适用于那些多条件判断的业务类型。