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

来源:互联网 发布:淘宝店铺音乐 编辑:程序博客网 时间:2024/05/19 17:03
//策略模式定义://定义一些列算法,把他们一个个封装起来,并且使他们可互相交换。//本模式使得算法可独立于使用它的客户而变化//实例:对不同的客户给出不同的折扣价格,上代码//策略接口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);}//策略模式本质:封装算法//优点:定义一系列算法,便于扩展;可以避免多重条件语句,更好的扩展性//缺点:客户必须了解每种策略的不同;增加了对象数目

0 0
原创粉丝点击