大话设计模式之代理模式
1,A想要和C通信,但是A却不是直接和C通信,而是先经过B,让B和C通信。即A是被代理者,B是代理者,C是目标对象。
2,当A使用代理B与C通信时,可以在B端增加一些功能,比如:在B上做一些安全控制和预处理。
3,代理模式的结构图中,代理类(B)和真实的类(A)都实现自同一个抽象接口,该抽象接口中声明了各个方法。真实类implements 该接口后,实现了该接口中的每一个方法。
4,代理类(B)(也implements该抽象接口,同时代理类还持有一个被代理类(A)的对象。代理类是如何实现接口中的方法的呢?----直接是借用被代理类的对象去调用相应的方法来实现。也即,代理类中的方法不是真正地实现,而是通过持有的被代理类的对象,使用被代理类的对象调用被代理类中的方法来实现的。
5,这样,在代理类B的方法中,可以先做一些控制和预处理,再调用被代理类的方法 ,构成了代理类的方法。