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()函數:選擇哪一種策略,輸入金額
}