设计模式-外观模式

68 阅读2分钟

定义

简单说就是把几个方法抽一个类包装以下,下面是详细定义:

外观模式(Facade Pattern)是一种软件设计模式,它提供了一个统一的接口,用于访问系统中一组复杂子系统的功能。外观模式通过定义一个高层接口,简化了与子系统的交互,并隐藏了子系统的复杂性,使得客户端能够更方便地使用子系统的功能。

在Java中,外观模式通常包含以下几个角色:

  1. 外观(Facade):外观类是外观模式的核心,它提供了简单的接口,用于将客户端的请求委派给子系统中相应的对象。外观类知道哪些子系统类负责处理特定的请求,将请求转发给它们并协调它们的操作。
  2. 子系统(Subsystems):子系统类是实现子系统功能的具体类。它们通过外观类提供的接口,对外隐藏了自身的复杂性,使得客户端无需直接与它们交互。
  3. 客户端(Client):客户端通过外观类的接口与子系统进行交互,无需直接调用子系统类。

下面是一个简单的Java代码示例,演示了外观模式的实现:

// 子系统类
class Subsystem1 {
    public void operation1() {
        System.out.println("Subsystem1: operation1");
    }
}

class Subsystem2 {
    public void operation2() {
        System.out.println("Subsystem2: operation2");
    }
}

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

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

    // 提供简单的接口,隐藏子系统的复杂性
    public void doSomething() {
        subsystem1.operation1();
        subsystem2.operation2();
    }
}

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

在上述示例中,外观类(Facade)提供了一个简单的接口(doSomething()),隐藏了子系统类(Subsystem1和Subsystem2)的复杂性。客户端只需通过外观类的接口调用所需的功能,而无需了解子系统的具体实现细节。这样可以降低客户端与子系统之间的耦合度,提高代码的可维护性和可扩展性。