策略模式,多判断情况:根据顾客判断打折优惠
定义接口,抽象策略角色,以供策略角色使用
public interface Strategy {
public double getPrice(double standardPrice);
}
角色1
public class NewCustomerFewStrategy implements Strategy {
@Override
public double getPrice(double standardPrice) {
System.out.println("不打折,原价");
return standardPrice;
}
}
角色2
public class NewCustomerManyStrategy implements Strategy {
@Override
public double getPrice(double standardPrice) {
System.out.println("打九折");
return standardPrice*0.9;
}
}
定义和策略角色交互的环境。构造方法用多态的方式接收策略角色
public class Context {
private Strategy strategy; //当前采用的算法对象
//可以通过构造器来注入
public Context(Strategy strategy) {
super();
this.strategy = strategy;
}
//可以通过set方法来注入
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void pringPrice(double s){
System.out.println("您该报价:"+strategy.getPrice(s));
}
}
使用
public class Client {
public static void main(String[] args) {
Strategy s1 = new OldCustomerManyStrategy();
Context ctx = new Context(s1);
ctx.pringPrice(500);
}
}
设计模式-策略模式
最新推荐文章于 2024-07-05 14:51:01 发布