栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot动态获取接口的实现类(工厂模式+策略模式)史上最实用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot动态获取接口的实现类(工厂模式+策略模式)史上最实用

业务代码里边出现很多if else 不同的条件逻辑处理都比较复杂,这样看起来代码显得就比较low了,下面教你如果使用工厂加策略实现,话不多说,直接上代码

1.测试controller

@Autowired
private TestStrategyFactory testStrategyFactory;

@PostMapping("/test")
public void initializationInv(@RequestParam(value = "str") String str){
    testStrategyFactory.get(str).test();
}

2.策略工厂类

@Component
public class TestStrategyFactory {

    @Autowired
    private List testStrategyList;

    public TestStrategy get(String str) {
        return testStrategyList.stream().filter(t -> t.accept(str)).findAny().get();
    }
}

3.策略接口

public interface TestStrategy extends IStrategy {

    void test();
}
public interface IStrategy {

    boolean accept(String a);
}

4.三个具体实现类 TestA  TestB  TestC

@Component
public class TestA implements TestStrategy {
    @Override
    public void test() {
        System.out.println("这里实现a的具体业务逻辑");
    }

    @Override
    public boolean accept(String a) {
        return StringUtils.equals("a", a);
    }
}
@Component
public class TestB implements TestStrategy {
    @Override
    public void test() {
        System.out.println("这里实现b的具体业务逻辑");
    }

    @Override
    public boolean accept(String b) {
        return StringUtils.equals("b", b);
    }
}
@Component
public class TestC implements TestStrategy {
    @Override
    public void test() {
        System.out.println("这里实现c的具体业务逻辑");
    }

    @Override
    public boolean accept(String c) {
        return StringUtils.equals("c", c);
    }
}

测试结果:

传a: 这里实现a的具体业务逻辑

传b: 这里实现b的具体业务逻辑

传c: 这里实现c的具体业务逻辑

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号