定义
简单说就是把几个方法抽一个类包装以下,下面是详细定义:
外观模式(Facade Pattern)是一种软件设计模式,它提供了一个统一的接口,用于访问系统中一组复杂子系统的功能。外观模式通过定义一个高层接口,简化了与子系统的交互,并隐藏了子系统的复杂性,使得客户端能够更方便地使用子系统的功能。
在Java中,外观模式通常包含以下几个角色:
- 外观(Facade):外观类是外观模式的核心,它提供了简单的接口,用于将客户端的请求委派给子系统中相应的对象。外观类知道哪些子系统类负责处理特定的请求,将请求转发给它们并协调它们的操作。
- 子系统(Subsystems):子系统类是实现子系统功能的具体类。它们通过外观类提供的接口,对外隐藏了自身的复杂性,使得客户端无需直接与它们交互。
- 客户端(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)的复杂性。客户端只需通过外观类的接口调用所需的功能,而无需了解子系统的具体实现细节。这样可以降低客户端与子系统之间的耦合度,提高代码的可维护性和可扩展性。