`
yangjizhong24
  • 浏览: 399117 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java设计模式:代理模式

阅读更多

上网看了看代理模式,搜了搜相关代码,特此写出:

 

 1. 代理模式


代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。


代理模式一般涉及到三个角色:


抽象角色:声明真实对象和代理对象的共同接口;

 
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。


真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

 

 

抽象角色:

 

abstract   public   class  Subject   {
    abstract   public   void  request(); 
}  

 

 

真实角色:实现了Subject的request()方法。

 

  public   class  RealSubject  extends  Subject   { 
     public  RealSubject()   { }  
    
     public   void  request()   { 
        System.out.println( " From real subject. " ); 
    }  
}  

 

 

代理角色: 

 

 

public   class  ProxySubject  extends  Subject   { 
     private  RealSubject realSubject;  // 以真实角色作为代理角色的属性  
 
      public  ProxySubject()   { }  


     public   void  request()   {  // 该方法封装了真实对象的request方法  
         preRequest(); 

         if ( realSubject  ==   null  )   { 

            realSubject  =   new  RealSubject(); 
        }  

        realSubject.request();  // 此处执行真实对象的request方法  
 
        postRequest(); 
    } 
 
 

 

 

客户端调用:

 

 

 Subject sub = new  ProxySubject(); 
Sub.request(); 
 

 

 

 

 由以上代码可以看出,客户实际需要调用的是RealSubject类的request()方法,现在用ProxySubject来代理 RealSubject类,同样达到目的,同时还封装了其他方法(preRequest(),postRequest()),可以处理一些其他问题

分享到:
评论

相关推荐

    JAVA设计模式(java设计)

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 3. 行为型模式: - 责任链模式:使多个对象有机会处理请求,从而避免请求...

    java23种设计模式详解+源码(绝对详解)

    在Java编程中,有23种经典的GoF(Gang of Four)设计模式,它们被分为三大类:创建型、结构型和行为型。本资源集合了这些模式的详细解释与源码分析,旨在帮助开发者深入理解和应用设计模式。 1. 创建型模式...

    Java设计模式——代理设计模式(静态代理和动态代理)

    在Java编程中,设计模式是一种解决常见问题的模板或最佳实践,它可以帮助开发者编写更加灵活、可维护和可扩展的代码。代理设计模式是其中的一种,它的主要作用是在不修改原有对象的基础上,为对象添加额外的功能或者...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    Java设计模式-代理模式例子

    在这个“Java设计模式-代理模式例子”中,我们将深入探讨代理模式的概念、实现方式以及它在实际开发中的应用。 代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象控制对原对象的访问。在...

    《Java设计模式》课程设计报告.docx

    《Java设计模式》课程设计报告主要探讨了如何利用Java编程语言和MyEclipse集成开发环境来实现基于设计模式的西瓜市场系统。这个项目涵盖了四种重要的设计模式:单例模式、代理模式、建造者模式和抽象工厂模式,为...

    java设计模式ppt

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型模式: - 责任链模式:将请求沿着处理者链传递,直到某个处理者处理请求。 - 命令模式:将请求封装为一个对象,从而使你可用不同的请求对...

    重学java的设计模式

    3. 代理模式:为其他对象提供一种代理以控制对这个对象的访问,比如权限控制、远程代理等。 4. 桥接模式:将抽象部分与实现部分分离,使得两者可以独立变化。 5. 组合模式:允许将对象组合成树形结构,以表示“部分-...

    JAVA设计模式(代理模式)

    **Java设计模式——代理模式详解** 代理模式是软件设计模式中的一个重要组成部分,它在Java编程中扮演着举足轻重的角色。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...

    Java设计模式之代理模式(结构)

    ### Java设计模式之虚拟代理模式详解 #### 一、引言 在软件工程领域,设计模式作为一种被广泛接受的最佳实践,对于提高代码质量和可维护性起着至关重要的作用。其中,“代理模式”作为结构型设计模式之一,在解决...

    JAVA设计模式之代理模式实例

    在Java编程领域,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于软件开发中以提高代码的可读性、可维护性和可扩展性。代理模式是设计模式的一种,它提供了一种对目标对象进行增强或者控制访问的方式。...

    Java设计模式代码

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型模式: - 责任链模式:定义一系列对象,每个对象包含处理请求的部分逻辑,请求沿着链传递直到被处理。 - 命令模式:将请求封装为一个对象...

    Java设计模式 编程思路

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型设计模式: - 责任链模式:避免将请求的发送者和接收者耦合在一起,多个对象都有可能处理该请求。 - 命令模式:将请求封装为一个对象,...

    Java设计模式PPT

    6. 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 7. 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 行为型设计模式则关注对象之间的责任分配和通信。它们包括: 1. 责任链...

    JAVA 设计模式手册

    - 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 3. **行为型模式**: - 责任链模式:避免将请求的发送者和接收者耦合在一起,多个对象都有可能处理请求。 - 命令模式:将请求封装为一个对象,以便...

    java 23种设计模式.zip

    2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

    23种java设计模式.pdf

    " JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...

    JAVA设计模式chm文档

    设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制...

Global site tag (gtag.js) - Google Analytics