首页 > 编程语言 >java: Strategy Patterns

java: Strategy Patterns

时间:2022-09-22 21:34:04浏览次数:58  
标签:12 java double price 09 copies Strategy Patterns 2022

 

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

相关文章

  • Java Map倒序排列
    publicstaticvoidmain(String[]args){Map<String,List<String>>map=newLinkedHashMap<>();//倒序遍历ListIterator<Map.Entry<......
  • 打印三位数的水仙花数Java
    publicclassFlower{//水仙花数就是一个个位数的立方+十位数的立方+百位数的立方=这个三位数//153=1*1*1+5*5*5+3*3*3 publicstaticvoidmain(String[]args){ ......
  • java8特性
    Lambda表达式lambda表达式:本质就是一个函数式接口的实例对象。语法:lambda形参列表箭头操作符lambda体;lambda形参列表其实就是函数式接口中抽象方法的形参列表,lambda......
  • JavaLearnDay04
    流程控制一、if分支结构(一)基本if分支结构作用:根据某个条件,控制某些代码执行与否语法:if(布尔表达式){ //当布尔表达式结果为true时,执行}布尔类型表达式:结果......
  • JavaScript学习笔记 第七章 原型
    原型prototypefunctionPerson(){}Person.prototype.a=123;varper=newPerson();//console.log(per.prototype);//conso......
  • 【逻辑】【java基础】代码逻辑思路 层级关系 【层级注解】【架构逻辑】
    命名规范: 层级逻辑关系图: 层级逻辑思路图:(代码架构逻辑) ......
  • java IO流详解
    转载流的概念和作用学习JavaIO,不得不提到的就是JavaIO流。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质......
  • java实现设置Excel下拉框
    在使用Excel的时候用到了下拉框,实现的效果如下↓   在生成excel文件时,需要根据给出的下拉框选项列表动态生成下拉框。实现代码如下:privatevoidcreateSelect(XSS......
  • JavaScript 静态方法
    静态方法:static关键字(类方法),可在实例化对象之前通过类名.方法名调用静态方法静态方法不能在对象上调用,只能在类中调用如果想在noob中使用静态方法,可以作为一个参数传递......
  • JAVA调用远程接口时模拟发送数据-json格式、x-www-form-urlencoded格式、文件+参数格
    实习期结束,总结一下实习时遇到的一些以前不常用的代码,以方便下次用到时取用,代码不涉及公司机密,需要根据自己的需要进行一定的修改!如有错误欢迎指正!一个需求是项目的某些接......