package com.cheng.zenofdesignpatterns.perfectworld.factory_strategy; /** * 扣款模块封装 */ public class DeductionFacade { // 对外公布的扣款信息 public static Card deduct(Card card, Trade trade) { // 获得消费策略 StrategyMan reg = getDeductionType(trade); // 初始化一个消费策略对象 IDeduction deduction = StrategyFactory.getDeduction(reg); // 产生一个策略上下问 DeductionContext context = new DeductionContext(deduction); // 进行扣款处理 context.exec(card, trade); // 返回扣款处理完毕后的数据 return card; } // 获得对应的商户消费策略 private static StrategyMan getDeductionType(Trade trade) { // 模拟操作 if (trade.getTradeNo().contains("abc")) { return StrategyMan.FreeDeduction; } else { return StrategyMan.SteadyDeduction; } } }