java 策略模式解决if-else ,函数式接口解决编写多个子类的问题

发布时间 2023-12-10 20:14:38作者: 我没有出家
/**
 * @author: szc
 * @date: 2023/9/2 22:45
 * @version: 1.0
 * @description: 从map中获取函数式接口,解决if-else 多个子类问题
 */
@Service
public class MapToInterface {

    @Autowired
    private TypeResult typeResult;

    private static Map<String, Function<String, String>> map = new HashMap<>();

    @PostConstruct
    public void init(){
        map.put("类型1", type ->typeResult.getType1(type));
        map.put("类型2", type ->typeResult.getType2());
        map.put("类型3", type ->typeResult.getType3());
    }

    public String getTypeResult(String type){
        Function<String, String> function = map.get(type);
        if(function != null){
            String result = function.apply(type);
            return result;
        }
        return null;
    }
}

@Service
class TypeResult{

    public String getType1(String type){
        return "传入的type为"+type+"获取类型1结果";
    }
    public String getType2(){
        return "获取类型2结果";
    }
    public String getType3(){
        return "获取类型3结果";
    }
}