• java: Strategy Pattern


    /**
     * 版权所有 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元 
    

      

  • 相关阅读:
    如何升级 sof_to_rbf.bat 文件
    用sopc-create-header-files工具产生头文件提示找不到命令
    HTTP状态码
    HTML5与CSS3知识点总结
    uni-app input 监听回车键 输入回车确定
    原生微信小程序转换uni-app
    关闭vscode保存就自动格式化的功能
    uni-appH5(uni.chooseFile uni.chooseImage)限制图片类型
    uni-appH5(uni.chooseFile uni.chooseImage)上传图片大小限制大小
    textRNN & textCNN
  • 原文地址:https://www.cnblogs.com/geovindu/p/16720925.html
Copyright © 2020-2023  润新知