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();
}
网友评论