回调模式: 底层方法不知道在使用过程中会添加什么逻辑,所以预留一个接口作为回调接口,调用的时候传递回调接口的实现来实现在调用方法上添加逻辑。
回调模式与装饰模式,代理模式的不同在于回调模式预留接口方法,在调用的时候实现,装饰模式和代理模式是持有被装饰对象或被代理对象的。
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;
装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能
二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,
你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制,
虽然代码很可能相同,但如果你都叫他们装饰,别人会很迷惑的。