一、什么是代理模式
- 针对一个对象
- 设置代理,控制这个对象的访问
- 用户不得直接访问对象,而要通过代理

二、ULM类图

class RealImg {
fileName: string
constructor(fileName: string) {
this.fileName = fileName
}
display() {
this.loadFromDist()
console.log('display...', this.fileName)
}
private loadFromDist() {
console.log('loading...', this.fileName)
}
}
class ProxyImg {
realImg: RealImg
constructor(fileName: string) {
this.realImg = new RealImg(fileName)
}
display() {
this.realImg.display()
}
}
const proxImg = new ProxyImg('xxx.png')
proxImg.display()
三、是否符合设计原则
- 代理和目标分离,解耦
- 代理可自行扩展
- 目标也可自行扩展
四、使用场景
- DOM事件代理(委托)
- Webpack devServer proxy
- Nginx 反向代理