`
xiaoxie
  • 浏览: 32892 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

设计模式之---代理模式Proxy Pattern

 
阅读更多

 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道
被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被
代理的人能干活呀。
比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的:
先定义一种类型的女人(接口):

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2. public interface KindWoman {  
  3.     public void makeEyesWithMan(); //抛媚眼  
  4. }  


然后定义潘金莲:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2.   
  3. public class PanJinlian implements KindWoman {  
  4.   
  5.     public void makeEyesWithMan() {  
  6.         System.out.println("潘金莲在抛媚眼。。。");  
  7.   
  8.     }  
  9.   
  10. }  

再来个王婆,也就是潘金莲的代理人:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2.   
  3. public class WangPo implements KindWoman {  
  4. private KindWoman kindwoman;  
  5.   
  6.   
  7.     public WangPo() {  
  8.         this. kindwoman = new PanJinlian();//王婆默认是潘金莲的代理人  
  9. }  
  10.     //王婆也可以是KindWomen的其他任何一个女人的代理,只要你是这一类型  
  11.     public WangPo(KindWoman kindWomen){  
  12.      this. kindwoman = kindWomen;  
  13.      }  
  14.   
  15.     public void makeEyesWithMan() {  
  16.          this. kindwoman.makeEyesWithMan(); //王婆这么大年龄了,谁看她抛媚眼?!她代替别人抛  
  17.          }  
  18.   
  19. }  

连个女猪脚已经登场,下面到西门庆了:

 

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2.   
  3. public class XiMenQing {  
  4.   
  5.       
  6.     public static void main(String[] args) {  
  7.         //把王婆叫出来  
  8.          WangPo wangPo = new WangPo();  
  9.          //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏:  
  10.          wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲  
  11.   
  12.     }  
  13.   
  14. }  


好了现在王婆为西门庆代理完了,说不准她还得给别人代理,假设现在又来了个潘金莲2号:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2.   
  3. public class PanJinlian222 implements KindWoman {  
  4.   
  5.     public void makeEyesWithMan() {  
  6.         System.out.println("潘金莲222在抛媚眼。。。");  
  7.   
  8.     }  
  9.   
  10.   
  11. }  


然后西门庆又来找王婆帮忙勾引潘金莲2号:修改西门庆:

 

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package com.fc.Proxy;  
  2.   
  3. public class XiMenQing {  
  4.   
  5.       
  6.     public static void main(String[] args) {  
  7.     /*  //把王婆叫出来 
  8.          WangPo wangPo = new WangPo(); 
  9.      
  10.          //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏: 
  11.          wangPo.makeEyesWithMan(); //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲 
  12. */    
  13.         WangPo wangPo=new WangPo(new PanJinlian222());//这个不是默认代理,要往里传个参数  
  14.         wangPo.makeEyesWithMan();  
  15.     }  
  16.   
  17. }  


说完这个故事,那额总结一下,代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是
接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。

 

分享到:
评论

相关推荐

    C#设计模式-吕震宇

    C#设计模式(13)-Proxy Pattern C#设计模式(12)-Decorator Pattern C#设计模式(11)-Composite Pattern C#设计模式(10)-Adapter Pattern C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder ...

    Android设计模式之代理模式(Proxy Pattern)

    Android设计模式之代理模式(Proxy Pattern)

    design-pattern-java.pdf

    实现对象的复用——享元模式(二) 实现对象的复用——享元模式(三) 实现对象的复用——享元模式(四) 实现对象的复用——享元模式(五) 代理模式-Proxy Pattern 设计模式之代理模式(一) 设计模式之代理模式...

    36种最新设计模式整理

    36种最新设计模式整理 Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 ...

    代理模式 Proxy Pattern

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    java 代理模式实现代码及设计详解:动态代理模式、静态代理模式

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...

    C#设计模式.PDF

    C#设计模式(13)-Proxy Pattern 113 一、 代理(Proxy)模式 113 二、 代理的种类 114 三、 远程代理的例子 114 四、 代理模式的结构 115 五、 代理模式示例性代码 115 六、 高老庄悟空降八戒 117 七、 不同类型的...

    设计模式 之 “代理模式[Proxy Pattern]”

    NULL 博文链接:https://lym6520.iteye.com/blog/692896

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...

    用Java实现23种设计模式

    代理模式(Proxy Pattern) 3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式...

    33种JAVA设计模式DEMO

    代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器...

    C#设计模式大全

    C#设计模式(13)-Proxy Pattern 一、 代理(Proxy)模式 二、 代理的种类 三、 远程代理的例子 四、 代理模式的结构 五、 代理模式示例性代码 六、 高老庄悟空降八戒 七、 不同类型的代理模式 八、 代理...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...

    C#设计模式_设计模式_C#_

    代理模式(Proxy Pattern) 行为型: 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18....

    设计模式PPT

     代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:  责任链模式(Chain of Responsibility Pattern)  命令模式(Command Pattern)  解释...

    CoreJava-DesignPattern

    创意设计模式 -- Abstract Factory - Done -- Builder - Done -- Factory Method -- Object Pool -- Prototype - Done -- Singleton - Done 结构设计模式 -- Adapter -- Bridge -- Composite -- Decorator - Done ...

    32种设计模式

    代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器...

Global site tag (gtag.js) - Google Analytics