策略模式可以用来改造多重if判断的程序
策略模式中的角色:策略接口,具体策略实现,上下文(用于存放所有策略的容器)
下面是根据不同的条件使用不同的支付方式
策略接口
public interface PayStrategy {
void pay();
}
策略具体实现
@Component
public class AliPay implements PayStrategy {
public void pay() {
System.out.println("支付宝支付");
}
}
@Component
public class ApplePay implements PayStrategy {
public void pay() {
System.out.println("苹果支付");
}
}
@Component
public class WeixinPay implements PayStrategy {
public void pay() {
System.out.println("微信支付");
}
}
在这里spring的IOC作为存放各种具体策略的容器
测试
@Configuration
@ComponentScan("com.shyf.strategy")
public class PayConfig {
}
public class MainApp {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PayConfig.class);
String payType = "aliPay";
PayStrategy payStrategy = (PayStrategy)context.getBean(payType);
payStrategy.pay();
}
}