1.代理模式:
在原有方法前后插入其他代码:
1.定义接口:抽象出被代理的方法2.被代理的对象实现接口3.代理对象实现接口,代理方法的实现委托给被代理对象proxy 代理商
2. 静态代理模式
// 定义接口(要代理的方法)interface Service {sale(n: number): void;fix(): void;}class Real implements Service {sale(n: number) {console.log("厂家销售" + n);}fix() {console.log("厂家维修");}other() {console.log("厂家其他方法");}}class MyProxy implements Service {// 委托(依赖)关系real: Real;constructor(real: Real) {this.real = real;}sale(n: number): void {console.log("代理开始销售" + n);this.real.sale(n);n += 10;console.log("代理捆绑一个超值大礼包!!!");console.log("代理完成销售" + n);}/*** 调用实际对象的方法*/fix(): void {console.log("代理开始修理");this.real.fix();console.log("代理完成修理");}}
测试代码部分:
// let r = new Real();// r.sale();// r.fix();// r.other();let a: Service;a = new Real();a.sale(100);//多态console.log("--------------------");a = new MyProxy(new Real());a.sale(100);//多态
控制台结果为:
装饰器模式 java IO中与它相似