结构型-外观模式(Facade Pattern)

概述

外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。通过在外观类中定义一个高层接口,外观模式隐藏了子系统的复杂性,并将客户端与子系统的内部逻辑解耦。

优点:

  • 简化了客户端与子系统之间的交互,降低了客户端与子系统的耦合度。
  • 提供了一个简单的接口,使得子系统更易于使用。
  • 隔离了客户端和子系统之间的细节,使得子系统的具体实现可以独立变化。

缺点:

  • 如果需要修改子系统的行为,可能需要修改外观类的代码。
  • 外观类可能会变得庞大,包含了很多与子系统相关的方法。这可能违反了单一职责原则。

适用场景:

  • 当你需要为一个复杂的子系统提供一个简单的接口时,可以使用外观模式。例如,你可以使用外观模式来封装一个复杂的第三方库或者服务。
  • 当你希望客户端与子系统之间解耦,以降低它们的依赖关系时,可以使用外观模式。
  • 当子系统的接口频繁变化,或者有多个接口实现时,可以使用外观模式来统一客户端的调用。

示例

一个常见的实际应用场景是购物平台。假设你正在开发一个电子商务平台,需要提供一个统一的购物接口,包括添加商品到购物车、生成订单、支付等操作。你可以使用外观模式来封装底层的购物逻辑,以提供一个简单的购物接口给客户端使用。

以下是一个示例代码:

java 复制代码
class ShoppingCart {
    public void addProduct(String productId) {
        System.out.println("添加商品到购物车:" + productId);
    }

    public void generateOrder() {
        System.out.println("生成订单");
    }

    public void payOrder(String orderId) {
        System.out.println("支付订单:" + orderId);
    }
}

class ShoppingFacade {
    private ShoppingCart shoppingCart;

    public ShoppingFacade() {
        this.shoppingCart = new ShoppingCart();
    }

    public void addToCart(String productId) {
        shoppingCart.addProduct(productId);
    }

    public void checkout() {
        shoppingCart.generateOrder();
    }

    public void pay(String orderId) {
        shoppingCart.payOrder(orderId);
    }
}

public class Main {
    public static void main(String[] args) {
        ShoppingFacade shoppingFacade = new ShoppingFacade();
        shoppingFacade.addToCart("P001");
        shoppingFacade.addToCart("P002");
        shoppingFacade.checkout();
        shoppingFacade.pay("O001");
    }
}

输出结果:

添加商品到购物车:P001

添加商品到购物车:P002

生成订单

支付订单:O001

相关推荐
workflower1 天前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
ly76891 天前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-14-适配器模式(业务实战篇)
java·设计模式·适配器模式·系统兼容·多渠道对接
略略略咯咯1 天前
(总结)设计模式
设计模式
Cosolar2 天前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g2 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye3 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o3 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手4 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
AustinXu4 天前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层
设计模式·团队管理