admin管理员组文章数量:1794759
Java设计模式:策略Strategy模式,以电影票折扣策略为例
/** * 折扣策略。 * * @author zhangfly * */ public interface DiscountStrategy { public double getDiscountPrice(double value); }
/** * 电影票模型。 * * @author zhangfly * */ public class MovieTicket { private double price; private DiscountStrategy strategy; public void setPrice(double price) { this.price = price; } // 设置电影票打折策略。 public void setDiscountStrategy(DiscountStrategy strategy) { this.strategy = strategy; } // 原价。 public double getPrice() { return price; } // 折扣价。 public double getDiscountPrice() { // 折扣票价计算策略。 return strategy.getDiscountPrice(this.price); } }
/** * 学生,折扣策略:打八折。 * * @author zhangfly * */ public class StudentDiscountStrategy implements DiscountStrategy { @Override public double getDiscountPrice(double value) { return value * 0.8; } }
/** * VIP,电影票折扣策略半价。 * * @author zhangfly * */ public class VIPDiscountStrategy implements DiscountStrategy { @Override public double getDiscountPrice(double value) { return value * 0.5; } }
public class Test { public Test() { double price = 100; MovieTicket movieTicket = new MovieTicket(); movieTicket.setPrice(price); System.out.println("电影票原价: " + movieTicket.getPrice()); DiscountStrategy studentStrategy = new StudentDiscountStrategy(); movieTicket.setDiscountStrategy(studentStrategy); System.out.println("学生票价: " + movieTicket.getDiscountPrice()); DiscountStrategy vipStrategy = new VIPDiscountStrategy(); movieTicket.setDiscountStrategy(vipStrategy); System.out.println("VIP票价: " + movieTicket.getDiscountPrice()); } public static void main(String[] args) { new Test(); } }
输出:
电影票原价: 100.0 学生票价: 80.0 VIP票价: 50.0
版权声明:本文标题:Java设计模式:策略Strategy模式,以电影票折扣策略为例 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686592159a85368.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论