标签:style c class blog code java
1. 什么是代理模式?Proxy Pattern
代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
通俗的讲,代理模式就是我很忙没空理你,你要想找我可以先找我的代理人,代理人和被代理人继承同一个接口。代理人虽然不能干活,但是被代理的人可以干活。
这个例子中有水浒传中的这么几个人:名垂青史的潘金莲,王婆,西门大官人。西门庆想要找潘金莲,需要找王婆做代理。首先定义一个接口:KindWomen,潘金莲和王婆是同一种女人,接口里面有两个功能:
package Proxy; public interface KindWomen { public void PaoMeiYan(); public void HappyWithMan(); }
定义潘金莲类,实现KindWomen接口
package Proxy; public class PanJinLian implements KindWomen { public void PaoMeiYan(){ System.out.println("潘金莲抛媚眼!"); } public void HappyWithMan(){ System.out.println("潘金莲happy with man……"); } }
定义王婆类,同样实现KindWomen接口
package Proxy; public class WangPo implements KindWomen{ private KindWomen kindwomen; public WangPo(){//默认为潘金莲的代理 this.kindwomen=new PanJinLian(); } public WangPo(KindWomen kindwomen){ this.kindwomen=kindwomen; } public void HappyWithMan(){ this.kindwomen.HappyWithMan(); } public void PaoMeiYan(){ this.kindwomen.PaoMeiYan(); } }
西门庆类:
package Proxy; public class XiMenQing { public static void main(String[] args) { WangPo wangPo=new WangPo(); wangPo.HappyWithMan(); wangPo.PaoMeiYan(); } }
结果:
再增加和潘金莲一类的女人贾氏
package Proxy; public class JiaShi implements KindWomen { public void HappyWithMan(){ System.out.println("贾氏happy with man……"); } public void PaoMeiYan(){ System.out.println("贾氏抛媚眼……"); } }
西门勾引贾
package Proxy; public class XiMenQing { public static void main(String[] args) { WangPo wangPo=new WangPo(); wangPo.HappyWithMan(); wangPo.PaoMeiYan(); JiaShi jiashi=new JiaShi(); wangPo=new WangPo(jiashi); wangPo.HappyWithMan(); wangPo.PaoMeiYan(); } }
JAVA设计模式(3)----代理模式,布布扣,bubuko.com
标签:style c class blog code java
原文地址:http://www.cnblogs.com/yaopan007/p/3755118.html