极简策略模式 代码如下 无任何依赖拷贝就可以学习

93 阅读1分钟
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
/**
 * 极简策略模式
 * */
public class Plan {
    /**
     * 定义策略
     * */
    public static final Map<Integer, Function<Integer, Integer>> map = new HashMap<>();
    /**
     * 初始化策略
     * */
    static {
        map.put(1, new PlanA()::say);
        map.put(2, new PlanB()::say);
        map.put(3, new PlanC()::say);
    }

    public static void main(String[] args) {
        Function<Integer, Integer> integerIntegerFunction1 = map.get(1);
        Plan plan = new Plan();
        Integer value = plan.getValue(integerIntegerFunction1, 2);
        System.out.println(value);

        Function<Integer, Integer> integerIntegerFunction2 = map.get(2);
        Integer value1 = plan.getValue(integerIntegerFunction2, 2);
        System.out.println(value1);

        Function<Integer, Integer> integerIntegerFunction3 = map.get(3);
        Integer value2 = plan.getValue(integerIntegerFunction3, 2);
        System.out.println(value2);
    }

    public Integer getValue(Function<Integer, Integer> function, Integer num) {
        //执行方法 并返回对象
        return function.apply(num);
    }
}

class PlanA {
    public Integer say(Integer num) {
        return num + 1;
    }

}

class PlanB {
    public Integer say(Integer num) {
        return num - 1;
    }
}

class PlanC {
    public Integer say(Integer num) {
        return num * num;
    }
}