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;
}
}