外观模式(Facade Pattern)是Java开发中常用的设计模式之一,属于结构型设计模式,提供了一个统一的接口
,用于访问子系统中的一群接口
。外观模式定义了一个高层接口,使得子系统更容易使用,同时隐藏了子系统的复杂性,简化了客户端与子系统之间的交互
,下面用Java代码来看看它的用法吧。
// 子系统A
class SubsystemA {
public void operationA() {
System.out.println("子系统A");
}
}
// 子系统B
class SubsystemB {
public void operationB() {
System.out.println("子系统B");
}
}
// 外观类
class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
public Facade() {
this.subsystemA = new SubsystemA();
this.subsystemB = new SubsystemB();
}
public void operation() {
subsystemA.operationA();
subsystemB.operationB();
}
}
// 测试代码
public class FacadePatternExample {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation();
}
}
优点:
- 简化了
客户端与子系统之间的交互
,客户端只需要与外观类交互,而不需要直接与子系统交互。 - 隐藏了
子系统的复杂性
,提高了系统的易用性。 - 符合开闭原则,客户端可以
直接使用外观类
而不需要关心子系统的具体实现。
缺点:
- 如果需要访问
子系统的更多细节或功能
,可能需要修改外观类。 - 外观模式可能会导致系统更加复杂,因为引入了
外观类
。
使用场景:
- 当希望
隐藏子系统
的复杂性,提高系统的易用性时,外观模式是一个很好的选择。 - 当需要将
客户端与子系统解耦
,减少相互依赖时,可以考虑使用外观模式。