package com.cheng.bigtalkdesignpatterns.strategy; /** * CashContext类 */ public class CashContext { private CashSuper cashSuper = null; /** * 改造前单纯的策略模式 * 通过构造函数传入具体的收费策略 */ @Deprecated public CashContext(CashSuper _cashSuper) { this.cashSuper = _cashSuper; } /** * 改造后 -- 策略与简单工厂结合 */ public CashContext(String _type) { switch (_type) { case "正常收费": CashNormal cs0 = new CashNormal(); cashSuper = cs0; break; case "满300返100": CashReturn cs1 = new CashReturn("300", "100"); cashSuper = cs1; break; case "打8折": CashRebate cs2 = new CashRebate("0.8"); cashSuper = cs2; break; } } // 根据收费策略的不同,获得计算结果 public double getResult(double _money) { return cashSuper.acceptCash(_money); } }