策略的设计模式属于行为型模式一种,通过定义的一套算法类,进行封装,让算法类之间可以相互替换,从而达到一种按照调用侧/实现侧去决定目标实现。策略模式可以最大程度的避免代码中 if else
以及 switch
语句。
策略模式 的实现包含三个组成部分,分别为 策略类
、 具体策略类
、 上下文
。
Strategy
。ConcreteStrategy
来配置,维护一个对 Strategy
对象的引用此处假定我们在商场购物,用户支付的环节,在用户支付过程中,我们可以选择 现金
、信用卡
、积分
。
public interface Payment {
void payment();
}
public class Cash implements Payment{
@Override
public void payment() {
System.out.println("现金付款");
}
}
public class Credit implements Payment{
@Override
public void payment() {
System.out.println("信用卡付款");
}
}
public class Points implements Payment{
@Override
public void payment() {
System.out.println("积分付款");
}
}
public class Shopping {
private Payment payment;
public Shopping(Payment payment) {
this.payment = payment;
}
public void buyDesktop(){
System.out.println("购买台式机");
payment.payment();
}
}
@DisplayName("策略应用")
@Test
public void testStrategy() {
Payment payment = new Cash();
Shopping shopping = new Shopping(payment);
shopping.buyDesktop();
}