外观模式

使用场景

就是客户端统一对象,解决客户端复用对象问题
image

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

image

实现

/// <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个以上的对象完成一个功能。那么,就可以使用外观设计模式。

posted @ 2025-07-11 19:36  龙猫•ᴥ•  阅读(7)  评论(0)    收藏  举报