策略模式解析

import java.util.*;

enum TYPE { NORMAL,CASH_DISCOUNT,CASH_RETURN};

interface Cashsuper {

public double acceptCash(double money);

}

class CashNormal implements CashSuper{// 正常收费子类

public double accptCash(double money){

return money;

}

}

class CashDiscount implements Cashsuper {

private double moneyDiscount; //折扣率

public CashDiscount(double moneyDiscount){

this moneyDiscount = moneyDiscount;

}

public double acceptCash(double money){

return money* moneyDiscount;

}

}

class CashReturn implements Cashsuper { //满额返利

private double moneyCondition;

private double moneyReturn;

public CashReturn(double moneyCondition, double moneyReturn){

this.moneycondition =moneyCondition;//满额数额

this.moneyReturn =moneyReturn;//返利数额

}

public double acceptCash(double money){

double result = money;

if (money >= moneyCondition )

result=money-Math.floor(money/moneyCondition )* moneyReturn;

return result;

}

}

class CashContext{

private Cashsuper cs;

private TYPE t;

public CashContext(TYPE t){

switch(t){

case NORMAL;// 正常收费

cs= new CashNormal();

break;

case CASH_RETURN;//满300返100

cs = new CashReturn(300,100);

break;

case CASH_DISCOUNT;//打8折

cs =new CashDiscount(0.8);

break;

}

}

public double GetResult(double money){

return cs.acceptCash(money);

}

//此处略去main()函数:选择哪一种策略,输入金额

}

相关推荐
yava_free1 分钟前
通过IoT边缘ModuleSDK进行进程应用的开发介绍?
java·ide·pycharm
小郑[努力版]3 分钟前
Nginx常用操作
java·python·中间件
倾听一世,繁花盛开5 分钟前
Java语言程序设计——篇二(1)
java·开发语言·eclipse
华子w90892585912 分钟前
60页论文参考:基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现
java·开发语言·vue.js·论文阅读
engchina14 分钟前
解析 pdfminer layout.py LAParams类及其应用实例
开发语言·python·pdfminer
不死鸟.亚历山大.狼崽子17 分钟前
python库(6):Pygments库
linux·开发语言·python
Thunter_18 分钟前
QT中常用英语单词
开发语言·qt
2301_7818335218 分钟前
深入探索Python库的奇妙世界:赋能编程的无限可能
开发语言·python
java66666888824 分钟前
使用Java构建一个高性能的消息队列系统
java·开发语言·linq
lsx20240625 分钟前
C++ 日期 & 时间
开发语言