package strategy;
public interface Strategy {
public double getPrice(double price);
}
package strategy;
/***
* 负责和具体的策略类交互
* 具体的算法和客户端分离
* 使得算法可以独立于客户端独立的变化
* @author zw
*
*/
public class Context {
private Strategy str;//当前采用的算法
//通过构造器注入
public Context(Strategy str) {
super();
this.str = str;
}
public void printPrice(Double d) {
System.out.println("报价为:"+str.getPrice(d)+"元。");
}
public void printPrice(int d) {
System.out.println("报价为:"+str.getPrice(d)+"元。");
}
}
package strategy;
public class NewSmallCustomer implements Strategy{
@Override
public double getPrice(double price) {
System.out.println("普通小客户不打折。");
return price;
}
}
package strategy;
public class OldBigCustomer implements Strategy{
@Override
public double getPrice(double price) {
System.out.println("老客户大批量打8折");
return price*0.8;
}
}
package strategy;
public class Client {
public static void main(String[] args) {
Context c = new Context(new OldBigCustomer());
c.printPrice(7777);
}
}
1400

被折叠的 条评论
为什么被折叠?



