java 策略模式-2015下半年软考-设计模式

商店有三种策略[原价、打折、满减]

//枚举三种策略
enum TYPE {NORMAL,CASH_DISCOUNT,CASH_RETURN}

interface CashSuper{
    public double acceptCash(double money);    
}

//原价
class CashNormal implements CashSuper{
    public double acceptCash(double money){
        return money;
    }
}

//打折
class CashDiscount implements CashSuper{
    private double discountRate;

    public CashDiscount(double discountRate){
        this.discountRate=discountRate;
        
    }
    public double acceptCash(double money){
        return money*discountRate;
    }
}

//满减
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-moneyReturn;
        }
        return result;
    }
}
public class CashContent {
    private CashSuper sc;
    private TYPE t;
    
    public CashContent (TYPE t){
            switch (t){
            case NORMAL:
            sc=new CashNormal();
            break;
            
            case CASH_DISCOUNT:
            sc=new CashDiscount(0.9);
            break;
            
            
            case CASH_RETURN:
            sc=new CashReturn(300.00,50.00);
            break;
        
        }
        
        
    }
    
//实现
    public static void main(String[] argus){
        CashContent cc=new CashContent(TYPE.CASH_RETURN);
        //CashContent cc=new CashContent(TYPE.CASH_DISCOUNT);
        //CashContent cc=new CashContent(TYPE.NORMAL);
        
        System.out.println(cc.sc.acceptCash(900));//结果为900-50=850.0
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值