工厂模式+enum

说明

    使用工厂模式、enum,消除看起来特别复杂的if判断。

    在使用支付时,不同的渠道,除了支付共用外,还有渠道单独的实现。如话费充值、购买抽奖机会。支付成功后,异步结果回来处理支付订单还要处理不同渠道的订单处理。可以根据渠道类别,使用该方式来确定具体的实现类。

涉及的类

    1.factory工厂类

    2.Enum枚举类

    3.Interface抽象接口

    4.接口实现类

//工厂类
@Component
public class TestFactory implements ApplicationContextAware{

  private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(
            ApplicationContext applicationContext) throws BeansException {
        this.applicationContext=applicationContext;
    }

    public TestInterface build(String name){
        return (TestInterface )applicationContext
                        .getBean(TestEnum.get(name);
    }

}
//抽象接口
public interface TestInterface{
    void test1();
}
//枚举
public enum TestEnum{
    TEST("TEST",Test.class);
    private String name;
    private Class cc;
    TestEnum(String name,Class cc){
        this.name=name;this.cc=cc;
    }

    public static TestInterface get(String name){
        TestEnum[] tests =TestEnum.values();
        for(TestEnum t:tests){
            if(t.name.equals(name){
                return t.cc;
            }
        }
    }
}
//实现类
@Component
public class Test implements TestInterface{
    public void test1(){
        //抽象实现
    }
}

//使用类
@SpringBootTest
public class Tt{

    @Autowired
    private TestFactory testFactory;

    @Test
    public void test1(){
        TestInterface test=testFactory.build("TEST");
        test.test1();
    }
}

添加实现步骤

    1.添加实现接口

    2.添加Enum枚举 类型  

如果有一个新的实现方式,只要实现TestInterface接口,实现它的方法。在枚举中添加对应的实现。调用的时候,确定是哪一个实现类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值