首页 > 代码库 > JAVA设计模式(3)----代理模式
JAVA设计模式(3)----代理模式
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(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。