package com.example.demofacade.demo2facade;
public class Test {
public static void main(String[] args) {
GiftInfo giftInfo = new GiftInfo("《C语言小白变怪兽》");
GiftExchangeService giftExchangeService = new GiftExchangeService();
giftExchangeService.exchange(giftInfo);
}
}
package com.example.demofacade.demo2facade;
public class GiftInfo {
private String name;
public GiftInfo(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.example.demofacade.demo2facade;
//创建外观角色 GiftExchangeService 类,对外只开放一个兑换礼物的 exchange() 方法,在 exchange() 方法内部整合 3 个子系统的所有功能。
public class GiftExchangeService {
//积分系统 IntegralService 类。
private IntegralService integralService = new IntegralService();
//支付系统 PayService 类。
private PayService pointsPayService = new PayService();
//物流系统 LogisticsService 类。
private LogisticsService logisticsService = new LogisticsService();
//兑换
public void exchange(GiftInfo giftInfo) {
if (integralService.isAvailable(giftInfo)) {
//资格校验通过
if (pointsPayService.pay(giftInfo)) {
//如果支付积分成功
String shippingOrderNo = logisticsService.delivery(giftInfo);
System.out.println("物流系统下单成功,订单号是:" + shippingOrderNo);
}
}
}
}
package com.example.demofacade.demo2facade;
public class IntegralService {
public boolean isAvailable(GiftInfo giftInfo) {
System.out.println("校验" + giftInfo.getName() + "积分资格通过,库存通过");
return true;
}
}
package com.example.demofacade.demo2facade;
public class PayService {
public boolean pay(GiftInfo pointsGift) {
//扣减积分
System.out.println("支付" + pointsGift.getName() + "积分成功");
return true;
}
}
package com.example.demofacade.demo2facade;
public class LogisticsService {
//发货
public String delivery(GiftInfo giftInfo) {
//物流系统的对接逻辑
System.out.println(giftInfo.getName() + "进入物流系统");
String shippingOrderNo = "88888888";
return shippingOrderNo;
}
}
=============================================
「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」_bugstack虫洞栈-CSDN博客