`
javabkb
  • 浏览: 53700 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

设计模式之结构模式之代理模式

阅读更多
1,UML图

  


   抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用
真实主题的地方都可以使用代理主题。
   代理主题(Proxy)角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以替代真实主体;控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或者之后,都要执行某个操作,而不是单纯地将调用传递给真实主题对象。
   真实主题角色:定义了代理角色所代表的真实对象。
     
2, 模式说明
  
   所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
   代理主题并不改变主题的接口,因为模式的用意是不让客户端感觉到代理的存在;其次,代理使用委派将客户端的调用委派给真实的主题对象,换言之,代理主题起到的是一个传
递请求的作用;最后,代理主题在传递请求之前和之后都可以执行特定的操作,而不是单纯传递请求。

   
3,模式示例代码
   
   
       package com.maohao.struct.proxy;

        public abstract class Subject {

	/**
	 * 声明某个商业方法
	 */
	abstract public void request();
       }
    


   
       package com.maohao.struct.proxy;

       public class RealSubject extends Subject {

	/**
	 * 构造子
	 */
	public RealSubject() {
	}
	
	@Override
	public void request() {

       System.out.println("From real subject");		
	}
       }
    


   
      package com.maohao.struct.proxy;

      public class ProxySubject extends Subject {

	private RealSubject realSubject;
	
	/**
	 * 构造子
	 */
	public ProxySubject() {
	}
	
	@Override
	public void request() {
           preRequest();
           if(realSubject == null) {
           realSubject = new RealSubject();
           }
           realSubject.request();
           postRequest();
	}
	
	/**
	 * 请求前的操作
	 */
	private void preRequest() {
		//...
	}
	
	/**
	 * 请求后的操作
	 */
	private void postRequest() {
		//...
	}
     }
    


4,与其他模式比较
     
   与适配器模式:粗看上去,适配器模式与代理模式很相像,它们都可视为一个对象提供一种前置的接口。但是,适配器模式的用意是要改变所考虑的对象的接口,而代理模式并不能改变所代理的对象的接口中,在这一点上两个模式有明显的区别。

    与装饰模式:装饰模式与所装饰的对象具有相同的接口,因此这两种模式也有可能混淆。但是装饰模式应当为所装饰的对象提供增强功能;而代理模式对对象的使用施加控制,并不提供对象本身的增强功能。

5,模式应用
   
   Java反射和动态代理
     
  • 大小: 23.4 KB
分享到:
评论

相关推荐

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

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

    JAVA设计模式之结构模式

    这是JAVA设计模式中属于结构模式的部分,包括Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)的源代码。其中有些模式中...

    JAVA设计模式chm文档

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

    JAVA-设计模式-结构型模式-代理模式

    JAVA-设计模式-结构型模式-代理模式

    c++设计模式-结构型模式-代理模式

    c++设计模式-结构型模式-代理模式,qt工程,c++源码,简单示例

    软件体系结构实验报告--设计模式2

    里面包括组合模式、外观模式、代理模式、观察者模式、策略模式等设计模式

    设计模式_结构型_代理模式.md

    设计模式_结构型_代理模式

    设计模式课件大全

    设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略...

    java 23种设计模式.zip

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

    设计模式文档 chm

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

    java常用23中设计模式

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    设计模式-C++

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    软件体系结构实验报告(设计模式)

    软件体系结构实验报告(设计模式):包含策略模式,代理模式,观察者模式,外观模式,组合模式,抽象工厂,单例,工厂方法,简单工厂,适配器模式,附有代码实例和类图

    23种JAVA设计模式和15种J2EE设计模式

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    java设计模式示例

    结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...

    23种设计模式项目实例

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    C#设计模式.PDF

    五、 透明式的合成模式结构 93 六、 透明式的合成模式实现 94 七、 使用合成模式时考虑的几个问题 97 八、 和尚的故事 98 九、 一个实际应用Composite模式的例子 98 C#设计模式(12)-Decorator Pattern 101 一、 ...

    23种设计模式实例

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    Java23种设计模式可直接运行Demo

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...

Global site tag (gtag.js) - Google Analytics