外观模式(Facade Pattern)

本文介绍了外观模式(FacadePattern),如何通过提供统一接口隐藏子系统的复杂性,简化客户端与子系统的交互。它有助于解耦、提高独立性和层次结构的组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问一组接口的功能。通过外观模式,客户端可以简化与复杂子系统的交互,只需要与外观对象进行交互。

1 结构图

在这里插入图片描述

2 代码展示

首先,我们有一个复杂的子系统,它包含多个类和接口:

// 子系统中的类
class SystemA {
    public void operationA() {
        System.out.println("SystemA methodA");
    }
}

class SystemB {
    public void operationB() {
        System.out.println("SystemB methodB");
    }
}

class SystemC {
    public void operationC() {
        System.out.println("SystemC methodC");
    }
}

然后,我们创建一个外观类,它将子系统的功能进行封装:

// 外观类
class Facade {
    private SystemA subSystemA;
    private SystemB subSystemB;
    private SystemC subSystemC;

    public Facade() {
        subSystemA = new SystemA();
        subSystemB = new SystemB();
        subSystemC = new SystemC();
    }

    public void wrapOperation() {
        subSystemA.operationA();
        subSystemB.operationB();
        subSystemC.operationC();
    }
}

最后,我们可以在客户端代码中使用外观类:

public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.wrapOperation();
    }
}

输出结果将是:
在这里插入图片描述

3 总结

在以下情况下可以使用外观模式:

  • 当要为一个复杂子系统提供一个简单接口时可以使用外观模式。该接口可以满足大多数用户的需求,而且用户也可以越过外观类直接访问子系统。
  • 客户程序与多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性
  • 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_WEH_coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值