设计模式--简单工厂

1.定义接口

public interface PaymentMethod {
    void pay();
}

2.实现接口类1

@Service
public class Alipay implements PaymentMethod {
    @Override
    public void pay(){
        System.out.println("zhifubaopay");
    }
}

3.实现接口类2

@Service
public class BalancePay implements PaymentMethod {
    @Override
    public void pay(){
        System.out.println("balancepay");
    }
}

4.实现接口类3

@Service
public class WeChatpay implements PaymentMethod {
    @Override
    public void pay(){
        System.out.println("wecharpay");
    }
}

4.测试调用1 直接在容器中,根据bean的名字获取需要的对象。

@Test
   public void test123(){
       ConfigurableApplicationContext context = SpringApplication.run(BlinkApplication.class); // 入口class
       String[] beans = context.getBeanDefinitionNames();
        for (String bean:beans) {
            System.out.println("bean:"+bean);
        }
       PaymentMethod paymentMethod = (PaymentMethod) context.getBean("alipay");
       paymentMethod.pay();
   }

5.创建一个工厂,根据所要给定的信息返回相应的bean

@Service
public class PayFactory {
    @Autowired
    private Alipay alipay;
    @Autowired
    private BalancePay balancePay;
    @Autowired
    private  WeChatpay weChatpay;
    public PaymentMethod pay(String paytype){
        switch (paytype){
            case "balancepay":
                return balancePay;
            case "alipay":
                return  alipay;
            case "wechartpay":
                return  weChatpay;
            default:
                System.out.println("zhifu fangh shi error");
        }
        return null;
    }
}

6.测试 使用

@Autowired
   private PayFactory payFactory;
   @Test
   public void testfactory(){
       String paytype="alipay";
       PaymentMethod paymentMethod= payFactory.pay(paytype);
       paymentMethod.pay();
   }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容