定义 提供一个统一的接口,用来访问子系统中的一群接口 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 类比:就像在餐馆点餐,只需要和服务员沟通就可以点到餐,而不需要了解厨房里的细节 应用场景 为一个复杂子系统提供一个简单的接口 解耦客户端和子系统之间的依赖关系 优缺点 优点 简化客户端对复杂系统的使用 减少客户端与子系统之间的依赖 缺点 增加了额外的封装层,可能会影响性能 实现代码 // 复杂子系统类 class Subsystem1 { public operation1(): string { return 'Subsystem1: Ready!'; } public operationN(): string { return 'Subsystem1: Go!'; } } class Subsystem2 { public operation1(): string { return 'Subsystem2: Get ready!'; } public operationZ(): string { return 'Subsystem2: Fire!'; } } // 外观类 class Facade { protected subsystem1: Subsystem1; protected subsystem2: Subsystem2; constructor(subsystem1: Subsystem1, subsystem2: Subsystem2) { this.subsystem1 = subsystem1; this.subsystem2 = subsystem2; } public operation(): string { let result = 'Facade initializes subsystems:\n'; result += this.subsystem1.operation1(); result += '\n'; result += this.subsystem2.operation1(); result += '\n'; result += 'Facade orders subsystems to perform the action:\n'; result += this.subsystem1.operationN(); result += '\n'; result += this.subsystem2.operationZ(); return result; } } // 客户端代码 function clientCode(facade: Facade) { console.log(facade.operation()); } const subsystem1 = new Subsystem1(); const subsystem2 = new Subsystem2(); const facade = new Facade(subsystem1, subsystem2); clientCode(facade);