代理模式
相比于观察者模式, 代理模式是一对多的关系
说明
- 为其他对象提供代理以控制访问
- 代理模式是一种结构型设计模式, 它允许你提供一个代理对象来控制对另一个对象的访问
- 代理可以在客户端和目标对象之间充当中间层, 用于增强功能, 控制访问或延迟初始化
- 应用场景: 远程代理、虚拟代理、保护代理
使用
ts
interface CalcInterface {
cacl: (x: number, y: number) => number
}
class Person {
// 代理
delegate: CalcInterface;
constructor(delegate: CalcInterface) {
this.delegate = delegate
}
// 计算
getRes(a: number, b: number) {
let res = this.delegate.cacl(a, b)
console.log(res)
}
}
class DoneA implements CalcInterface {
cacl(x: number, y: number) {
return x + y
}
}
class DoneB implements CalcInterface {
cacl(x: number, y: number) {
return x - y
}
}
// 创建实例传入代理
const man = new Person(new DoneA())
man.getRes(3, 4)