美文网首页
设计模式--简单工厂

设计模式--简单工厂

作者: never_b6a7 | 来源:发表于2021-06-23 11:11 被阅读0次

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

    相关文章

      网友评论

          本文标题:设计模式--简单工厂

          本文链接:https://www.haomeiwen.com/subject/urdmyltx.html