策略模式解析

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()函数:选择哪一种策略,输入金额

}

相关推荐
J***793916 小时前
Python在机器学习中的数据处理
开发语言·python·机器学习
子不语18016 小时前
Matlab(一)——绘图
开发语言·matlab
222you16 小时前
MyBatis-Plus当中BaseMapper接口的增删查改操作
java·开发语言·mybatis
纪莫16 小时前
技术面:MySQL(一条SQL在MySQL的执行过程?、MyISAM和InnoDB的区别?数据库事务机制?)
java·数据库·java面试⑧股
闲人编程17 小时前
Python协程的演进:从yield到async/await的完整历史
java·前端·python·async·yield·await·codecapsule
q***925117 小时前
PHP操作redis
开发语言·redis·php
帅中的小灰灰17 小时前
C++编程建造器设计模式
java·c++·设计模式
大佬,救命!!!17 小时前
python实现五子棋
开发语言·python·个人开发·pygame·少儿编程·五子棋
动感小麦兜17 小时前
应用-常用工具部署命令
java·开发语言
日日行不惧千万里18 小时前
IDEA 是用什么开发的?
java·ide·intellij-idea