`
xiaoxie
  • 浏览: 34057 次
  • 性别: 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 ...

    java设计模式---诙谐易懂版

    例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...

    design-pattern-java.pdf

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

    设计模式之代理模式proxy

    **设计模式之代理模式(Proxy Pattern)** 设计模式是软件工程中的一种最佳实践,它是在特定情境下解决常见问题的模板。代理模式是其中一种行为设计模式,它的核心思想是为一个对象提供一个替身或者代理,以控制对...

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

    **代理模式(Proxy Pattern)**是软件设计模式中的结构型模式之一,它在对象访问控制、增加额外功能或在客户端与目标对象之间提供一个中介等方面有广泛的应用。在代理模式中,代理类作为真实对象的代表,它持有真实...

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

    在这些模式中,代理模式(Proxy Pattern)是一种常用的结构型设计模式,它允许我们为一个对象创建一个代理,该代理对象在客户端和目标对象之间起到中介的作用,可以增加额外的功能或控制访问。 代理模式分为两种...

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

    代理模式是设计模式的一种,它的主要目的是在不改变原有对象的基础上,为一个对象提供额外的功能或者控制对这个对象的访问。在Android开发中,代理模式的应用尤为常见,尤其在处理复杂的业务逻辑、网络请求、界面...

    c++-设计模式之代理模式(Proxy)

    代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于保护、延迟加载、记录请求等场景,可以在不改变原有对象的情况下为其增加新的功能。 代理...

    设计模式整理代码-pattern.zip

    - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):为子系统提供一个统一的接口,使得子系统的复杂性对客户透明。 - 适配器模式(Adapter):使两个不兼容的接口能够...

    代理模式 Proxy Pattern

    ### 代理模式 Proxy Pattern #### 概念定义 代理模式是一种结构型设计模式,它允许程序员为某对象创建一个代理对象来控制对该对象的访问。简单来说,就是在不修改原始类的基础上,通过引入代理对象来扩展类的行为...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    4. **代理模式(Proxy Pattern)**:代理模式为其他对象提供一种代理以控制对这个对象的访问。在Java中,我们可以使用动态代理(`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`)或者静态代理...

    优秀的设计模式示例-静态代理模式

    静态代理模式是设计模式中的一种,属于结构型模式,主要用在我们想要在不修改原有对象的基础上,为对象添加额外功能或者控制对象的行为时。在这个例子中,"优秀的设计模式示例-静态代理模式"提供了实际项目中的代码...

    优秀的设计模式示例-动态代理模式

    动态代理模式是一种在运行时创建代理对象以控制或扩展原有对象行为的设计模式。它允许我们为现有的对象提供一种代理以增强其功能,而无需修改原对象的代码。动态代理模式通常用于实现对目标对象的额外操作,如日志...

    JAVA design pattern-java设计模式

    在这个名为"JAVA design pattern-java设计模式"的CHM文件中,我们可能找到了关于如何在Java开发中应用设计模式的详细信息。 设计模式通常分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建,如单例...

    这是一套 Java 设计模式的集合示例-design-pattern.zip

    - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):为子系统提供一个统一的接口,使得子系统更加容易使用。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们...

    design-pattern-Java设计模式

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和标准解决方案。设计模式并不直接提供代码实现,而是提供了一种通用的语言,让开发者能够更好地理解和交流复杂的系统架构。这些...

    设计模式 - Design Pattern

    "Design Pattern"这个压缩包文件很可能包含了一些关于设计模式的实例和文档,特别是提到了"design-pattern\doc\api"目录下的"index.html",这可能是一个交互式的文档或者教程,通过实例帮助开发者更好地理解设计模式...

    java常用设计模式-代理模式

    代理模式(Proxy Pattern)是一种常用的设计模式,提供了间接访问目标对象的一种方式,即通过代理对象访问目标对象。这样做的好处是,可以在不改变原有目标对象的基础上,对目标对象增加额外的扩展功能。 代理模式...

    c++设计模式 设计模式精解-GoF 23种设计模式解析附C++实现源码

    ### C++设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。本文旨在深入剖析GoF(Gang of Four)提出的23种...

    Java设计模式之禅

    2. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问,常用于延迟初始化或访问控制等场景。 3. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。 4. 多例...

Global site tag (gtag.js) - Google Analytics