java代理模式顾名思义,就类似于大学,我想和冰可乐,可是我又在玩游戏,于是我让我的室友帮我把可乐带回来,简单的来说我的室友就是代理,而买可乐就是需要做的行为。这是笔者理解的代理模式
大话设计模式-类图
要想实现代理,那么代理类和被代理的类就都要实现一个共同的接口,就刚刚买可乐的例子,我和我的室友都可以买可乐。
代理类可以动态的去做一些事情,例如室友心情不好不帮你买可乐了,或者心情好,在买可乐的同时还赠送我一个冰激凌,当然这是生活的例子,实际工作中,我们往往会遇到一些需要代理,但又不想给全部权限,
这时我们可以赋予代理类一个只有局部权限的对象。
下面是就刚刚例子的JAVA代码:
/** * 拥有共同行为的接口 */ public interface ISubject { public void buyKole(); }
/** * 室友,帮买可乐 */ public class ProxyRoommate implements ISubject{ private RealSubjectI realSubjectI; public ProxyRoommate(RealSubjectI realSubjectI) { this.realSubjectI = realSubjectI; } @Override public void buyKole() { //TODO 这里可以做很多事情,甚至决定不去执行买可乐 realSubjectI.buyKole(); System.out.println("心情好送你一块冰激凌"); } }
/** * 被代理类 */ public class RealSubjectI implements ISubject{ @Override public void buyKole() { System.out.println("去买可乐"); } }
/** * 客户端 */ public class Test { public static void main(String[] args) { ProxyRoommate proxyRoommate = new ProxyRoommate(new RealSubjectI()); proxyRoommate.buyKole(); } }
以上是笔者对代理模式的理解,希望能帮助正在学习设计模式的童鞋!