10、同样最后我们来运行下效果看下:
public class App { public static void main(String[] args) { //基金投资产品 FundProduct product = new FundProduct(); product.setProductCode("NFSY"); product.setName("南方石油"); product.setPrice(1); product.setCouponTypeList(Arrays.asList(CouponTypeEnum.COUPON, CouponTypeEnum.RED_PACKET)); MarketCouponInfo info = new MarketCouponInfo(); info.setId(1); info.setCouponType(CouponTypeEnum.RED_PACKET); info.setCouponAmount(50); MarketCouponInfo clone = info.clone(); clone.setId(2); clone.setCouponType(CouponTypeEnum.COUPON); clone.setCouponAmount(100); //用户下单 Order order = new Order(); order.setId(1); //买500份,查询支付金额 order.setInvestCount(5000); order.setFundProduct(product); //券信息 order.setCouponInfo(clone); order.setRedPacketInfo(info); Integer payAmount = MarketFactory.getPayAmount(order); System.out.println("实际应该支付金额:" + payAmount); } }最终实现效果:
订单总金额为:5000 优惠券金额:100 红包优惠金额:50 实际应该支付金额:4850到这里相信大家对装饰者模式的应用场景有了一定的了解,装饰者模式的应用让我们抽离出基本需求和扩展需求,更灵活的对扩展需求进行组合。