通俗易懂设计模式(外观模式)

67 阅读2分钟

外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供了一个一致的高层接口,使得子系统更容易使用。外观模式将子系统的复杂性隐藏在一个简单的外观类后面,使得客户端可以通过这个外观类来访问子系统的功能。

外观模式的主要组成部分包括:

  1. 外观类(Facade):为子系统中的一组接口提供了一个一致的高层接口。
  2. 子系统(Subsystem):包含一组相关的类,这些类实现了子系统的功能。

外观模式的优点:

  1. 简化了客户端与子系统之间的交互:外观模式将子系统的复杂性隐藏在一个简单的外观类后面,使得客户端可以通过这个外观类来访问子系统的功能。
  2. 提高了代码的可维护性:外观模式将子系统的复杂性隐藏在一个简单的外观类后面,使得子系统的内部实现可以独立于客户端进行修改和维护。

Java 实现外观模式的示例代码:

// 子系统 1
public class Subsystem1 {
    public void method1() {
        System.out.println("Subsystem1 method1");
    }
}

// 子系统 2
public class Subsystem2 {
    public void method2() {
        System.out.println("Subsystem2 method2");
    }
}

// 外观类
public class Facade {
    private Subsystem1 subsystem1;
    private Subsystem2 subsystem2;

    public Facade() {
        subsystem1 = new Subsystem1();
        subsystem2 = new Subsystem2();
    }

    public void methodA() {
        subsystem1.method1();
        subsystem2.method2();
    }

    public void methodB() {
        subsystem2.method2();
        subsystem1.method1();
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
    }
}

在这个示例中,我们定义了两个子系统类 Subsystem1Subsystem2,它们分别实现了子系统的功能。然后,我们定义了一个外观类 Facade,它为子系统中的一组接口提供了一个一致的高层接口。在外观类中,我们创建了子系统类的实例,并定义了一些方法来调用子系统类的方法。

在客户端代码中,我们创建了一个外观类对象,并调用了它的方法。通过这个外观类对象,我们可以访问子系统的功能,而不需要直接与子系统类进行交互。这样,我们就将子系统的复杂性隐藏在了一个简单的外观类后面,使得客户端可以更容易地使用子系统的功能。