定义
外观模式,是一种结构型设计模式,它提供了一个统一的接口来访问子系统中的一组接口。
外观模式定义了一个高层接口,使得子系统更容易使用。通过门面模式,可以帮助客户端与复杂子系统之间解耦,只需要与门面对象交互即可。
UML 类图
typescript 实现
1. 定义一个或多个复杂子系统
class Subsystem1 {
public operation1(): string {
return `Subsystem1: Ready!\n";
}
public operationN(): string {
return `Subsystem1: Go!\n";
}
}
class Subsystem2 {
public operation1(): string {
return `Subsystem2: Ready!\n";
}
public operationZ(): string {
return `Subsystem2: Fire!\n";
}
}
2. 创建门面类
class Facade {
protected subsystem1: Subsystem1;
protected subsystem2: Subsystem2;
constructor(subsystem1?: Subsystem1, subsystem2?: Subsystem2) {
this.subsystem1 = subsystem1 || new Subsystem1();
this.subsystem2 = subsystem2 || new Subsystem2();
}
public operation(): string {
let result = `Facade initializaes subsystems:\n";
result += this.subsystem1.operation1();
result += this.subsystem2.operation1();
result += 'Facade orders subsystems to perform the action:\n";
result += this.subsystem1.operationN();
result += this.subsystem2.operationZ();
return result;
}
}
3. 使用示例
function clientCode(facade: Facade) {
console.log(facade.operation());
}
// 在客户端代码中使用门面模式
const subsystem1 = new Subsystem1();
const subsystem2 = new Subsystem2();
const facade = new Facade(subsystem1, subsystem2);
clientCode(facade);
通用实现
无