外观模式
外观模式(Facade Pattern) 是一种结构型设计模式,它为复杂的子系统提供一个统一的接口,使得子系统更容易使用。外观模式通过创建一个高层接口来隐藏系统的复杂性。
核心角色
- Facade(外观类):提供简化的接口,知道哪些子系统负责处理请求
- Subsystems(子系统类):实现子系统的功能,处理由外观类指派的任务
- Client(客户端):通过外观类来调用子系统的方法
代码示例:
typescript
class FileLoggerSystem {
/**
* 获取文件日志记录条数
* @returns
*/
public statistics() {
return Math.floor(Math.random() * 1e3)
}
}
class ImageLoggerSystem {
/**
* 获取图片日志记录条数
* @returns
*/
public statistics() {
return Math.floor(Math.random() * 1e3)
}
}
//使用外观模式简化获取所有日志的记录
class Facade {
private fileService: FileLoggerSystem
private imgService: ImageLoggerSystem
constructor(fileService: FileLoggerSystem, imgService: ImageLoggerSystem) {
this.fileService = fileService
this.imgService = imgService
}
/**
* 封装与子系统的交互
* @returns any
*/
public logStatics() {
return {
fileLoggers: this.fileService.statistics(),
imgLoggers: this.imgService.statistics(),
}
}
}
console.log(
'[ ] >',
new Facade(new FileLoggerSystem(), new ImageLoggerSystem()).logStatics(),
)