/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 策略模式 Strategy Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc DiscountStrategy.java * * */ package com.javapatterns.strategy; import java.util.*; /** * 抽象 * @author geovindu * * */ abstract public class DiscountStrategy { /** * 策略方法 * @return 返回折扣的价格数量 * */ abstract public double calculateDiscount(); }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 策略模式 Strategy Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc NoDiscountStrategy.java * * */ package com.javapatterns.strategy; /** * 没有折扣 * @author geovindu * * */ public class NoDiscountStrategy extends DiscountStrategy{ /** * 价格 * */ private double price = 0.0; /** *份数 * */ private int copies = 0; /** * * @param price 输入 价格 * @param copies 输入 份数 * * */ public NoDiscountStrategy(double price, int copies) { // super(); this.price = price; this.copies = copies; } /** *策略方法 * @return 返回折扣的价格数量 * * */ public double calculateDiscount() { return 0.0; } }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 策略模式 Strategy Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc FlatRateStrategy.java * * */ package com.javapatterns.strategy; /** * 固定费用折扣 * @author geovindu * * */ public class FlatRateStrategy extends DiscountStrategy{ /** * 固定的折扣数 * */ private double amount; /** * 价格 * */ private double price = 0; /** * * 份数 * */ private int copies = 0; /** * * @param price 输入 价格 * @param copies 输入 份数 * * */ public FlatRateStrategy(double price, int copies) { this.price = price; this.copies = copies; } /** *取值固定折扣数 * @return 返回固定值 * * */ public double getAmount() { return amount; } /** *赋值固定折扣数 * @param amount 输入固定折扣数 * * */ public void setAmount(double amount) { this.amount = amount; } /** *策略方法 * @return 返回折扣的价格数量 * * */ public double calculateDiscount() { return copies * amount; } }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 策略模式 Strategy Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc PercentageStrategy.java * * */ package com.javapatterns.strategy; /** * 百分比折扣 * @author geovindu * * */ public class PercentageStrategy extends DiscountStrategy{ /** *折扣百份比 * */ private double percent = 0.0; /** *价格 * */ private double price = 0.0; /** *份数 * */ private int copies = 0; /** * * @param price 输入 价格 * @param copies 输入 份数 * * */ public PercentageStrategy(double price, int copies) { this.price = price; this.copies = copies; } /** *取值百份比 * * * */ public double getPercent() { return percent; } /** *赋值 百份比的折扣 * @param percent 输入 百分比 * * */ public void setPercent(double percent) { this.percent = percent; } /** *策略方法 * @return 返回折扣的价格数量 * * */ public double calculateDiscount() { return copies * price * percent; } }
调用测试:
//策略模式 double price=25.0; int copies=2; NoDiscountStrategy noDiscountStrategy=new NoDiscountStrategy(price,copies); double zk=noDiscountStrategy.calculateDiscount(); FlatRateStrategy flatRateStrategy=new FlatRateStrategy(price,copies); flatRateStrategy.setAmount(2.0); double zk2=flatRateStrategy.calculateDiscount(); PercentageStrategy percentageStrategy=new PercentageStrategy(price,copies); percentageStrategy.setPercent(0.2); double zk3=percentageStrategy.calculateDiscount(); System.out.println("第一种折扣是:"+zk+"元 第二种折扣是::"+zk2+" 第三种折扣是::"+zk3+"元 ");
输出:
第一种折扣是:0.0元 第二种折扣是::4.0 第三种折扣是::10.0元
标签:12,java,double,price,09,copies,Strategy,Patterns,2022 From: https://www.cnblogs.com/geovindu/p/16720925.html