您的位置:首页 > 其它

设计模式入门之策略模式Strategy

2014-05-11 17:24 435 查看
//策略模式定义:
//定义一些列算法,把他们一个个封装起来,并且使他们可互相交换。
//本模式使得算法可独立于使用它的客户而变化
//实例:对不同的客户给出不同的折扣价格,上代码
//策略接口
public class Strategy {
public double calcPrice(double goodsPrice);
}
//普通用户价格算法
public class NormalCustomerStrategy implements Strategy {
public double calcPrice(double goodsPrice) {
System.out.println("新用户、普通用户,没有折扣");
return goodsPrice;
}
}
//老用户用户价格算法
public class OldCustomerStrategy implements Strategy {
public double calcPrice(double goodsPrice) {
System.out.println("老用户95折");
return goodsPrice*(1-0.05);
}
}
//大用户价格算法
public class LargeCustomerStrategy implements Strategy {
public double calcPrice(double goodsPrice) {
System.out.println("大用户9折");
return goodsPrice*(1-0.1);
}
}
//上下文(环境),价格管理
public class Price {
private Strategy strategy = null;
public Price(Strategy strategy) {
this.strategy = strategy;
}
public double calcPrice(double goodsPrice) {
return this.strategy.calcPrice(goodsPrice);
}
}
//测试
public class Client {
Strategy strategy = new LargeCustomerStrategy();
Price ctx = new Price(strategy);
ctx.calcPrice(1000);
}
//策略模式本质:封装算法
//优点:定义一系列算法,便于扩展;可以避免多重条件语句,更好的扩展性
//缺点:客户必须了解每种策略的不同;增加了对象数目
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息