外观模式
使用场景
就是客户端统一对象,解决客户端复用对象问题

以下是购买商品的相关服务

实现
/// <summary>
/// 商品微服务
/// </summary>
class ProductMicroService
{
/// <summary>
/// 获取商品
/// </summary>
public void GetProduct()
{
Console.WriteLine($"获取商品");
}
}
/// <summary>
/// 订单微服务
/// </summary>
class OrderMicroService
{
/// <summary>
/// 创建订单
/// </summary>
public void CreateOrder()
{
Console.WriteLine($"创建订单");
}
}
/// <summary>
/// 库存微服务
/// </summary>
class StockMicroService
{
/// <summary>
/// 扣减库存
/// </summary>
public void ReduceStock()
{
Console.WriteLine($"扣减商品库存");
}
}
/// <summary>
/// 支付微服务
/// </summary>
class PayMicroService
{
/// <summary>
/// 支付
/// </summary>
public void Pay()
{
Console.WriteLine($"支付成功");
}
}
/// <summary>
/// 聚合微服务(外观模式)
/// </summary>
class AggregationMicroServiceFacade
{
private OrderMicroService orderMicroService;
private PayMicroService payMicroService;
private ProductMicroService productMicroService;
private StockMicroService stockMicroService;
public AggregationMicroServiceFacade()
{
this.orderMicroService = new OrderMicroService();
this.payMicroService = new PayMicroService();
this.productMicroService = new ProductMicroService();
this.stockMicroService = new StockMicroService();
}
/// <summary>
/// 购买商品
/// </summary>
public void BuyProduct()
{
productMicroService.GetProduct();
orderMicroService.CreateOrder();
stockMicroService.ReduceStock();
payMicroService.Pay();
}
}
客户端调用
AggregationMicroServiceFacade aggregationMicroServiceFacade = new();
aggregationMicroServiceFacade.BuyProduct();
总结
优势:
- 保证客户端遵守开闭原则
- 提升了客户端复用多个对象的能力
缺陷:
- 导致系统复杂性上升
主要应用场景:
客户端调用2个以上的对象完成一个功能。那么,就可以使用外观设计模式。
本文来自博客园,作者:龙猫•ᴥ•,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/18979470

浙公网安备 33010602011771号