java设计模式---代理模式
2016-11-23 16:49
288 查看
代理模式
代理模式有两个概念:代理者和被代理者,代理者要想在人前为被代理者处理各种事情,那么代理者就必须知道被代理者能够干什么。代理者和被代理者其实是具有相同的功能的,只不过是代理在表面周旋,被代理者实际操作,那么用我们java来说要实现两者具有相同的功能,那么代理者和被代理者两个对象(Object)就是实现想通过的接口(interface)。
我现在用一个形象生动地来列子来描述一下代码模式,相信看过古装电视剧的同学们都知道里面少不有一个地方那就怡红院,里面有一个老鸨(代理者)、苏小小(被代理者)、陈圆圆(被代理者)、客官(调用代理者Object)。
IWomanProxy.java[代理者和被代理者公共接口]
/** *定义了一个怡红院女人做事的接口 */ public interface IWomanProxy{ public viod drinking();//陪喝 public void play();//陪玩 }
SuWomanProxy.java[苏小小的实现类]
public class SuWomanProxy{ public void drinking(){ system.out.printf("this is Suxiaoxiao dirnking method"); } public void play(){ system.out.printf("this is Suxiaoxiao play mehtod"); } }
ChenWomanProxy.java[陈圆圆的实现类]
public class SuWomanProxy{ public void drinking(){ system.out.printf("this is Chenyuayuan dirnking method"); } public void play(){ system.out.printf("this is Chenyuayuan play mehtod"); } }
….
MaWomanProxy[老鸨的实现类]
public class MaWomanProxy{ private IWomanProxy womanProxy; public MaWomanProxy(){ this.womanProxy=new ChenyuanyuanWomanProxy();//陈圆圆是头牌,首先做她的代理 } public MaWomanProxy(IWomanProxy iWomanProxy){ this.womanProxy=iWomanProxy; } //老鸨说可观进来我陪你喝几杯呀,其实真正喝的是陈圆圆或者苏小小,你也不愿意找老鸨啊,呵呵~~ public void drinking(){ this.womanProxy.drinking(); } public void play(){ this.womanProxy.play(); } }
Man.java[客官]
public class Man{ public static void main (String[] args){ //乡下客官一进城,就老鸨来陪喝酒,陪玩 MaWomanProxy mama=MaWomanProxy();//默认代理 mama.drinking(); mama.play(); MaWomanProxy mama2=MaWomanProxy(new SuWomanProxy);//客官就是喜欢苏小小,老鸨也乐意 mama2.drinking(); mama2.play(); } }
以上例子应该可以体现代理模式的意思吧,呵呵,写得不好还请见谅~~~~
相关文章推荐
- 基于Java的代理设计模式
- 基于Java的代理设计模式
- Java设计模式:单态模式,工厂模式,代理模式,观察者模式示例
- java 设计模式 学习笔记(6) 代理模式
- JAVA 设计模式 代理Proxy模式 一
- 基于Java的代理设计模式
- 深入浅出基于Java的代理设计模式
- JAVA设计模式之代理模式
- [转]转个经典的帖子:说故事学设计模式之-Java动态代理模式
- java设计模式-代理模式
- Java设计模式:Proxy(代理)
- java GOF设计模式--------------代理模式(Proxy Pattern)
- 深入浅出基于Java的代理设计模式
- java设计模式_代理模式_动态代理(带例子)
- Java设计模式:Proxy(代理)
- 设计模式:用Java动态代理实现AOP
- Java设计模式-----Proxy模式(静态代理)
- Java设计模式-----Proxy模式(动态代理)
- Java设计模式之虚拟代理模式
- JAVA设计模式之代理模式(转)