代理模式的实现机制和前面提到的装饰模式是一样的,也同样是两个实现了同一个接口的类,其中一个类持有另外一个类的实例,然后再同名方法中调用另一个类的方法,在调用方法之前或之后做一些其他的操作。
这里特别提一下代理模式与装饰模式的区别:
1、装饰模式,是针对原类的扩展,在原类的基础上增加以下其他的操作。具体来说,调用者先创建原类的实例,然后传参给装饰类。
2、代理模式,是针对原类的限制访问。有代理类自动创建原类的实例,调用者只需看见代理类,不用理会原类。
使用代理模式的好处主要在于能将功能划分的更加清晰。