代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
简介
Proxy是代理的意思,代理概念可以解释为在出发点到目的地之间有一道中间层,意为代理。假设一个系统一用一个对象A,现要向该系统中加入一个新的对象C,对象C需要使用系统中已有的对象A,但是A提供的接口不符合C的要求,就是C现在不能像系统现在这样使用A,这是设计师可以使用代理,选择一个中介对象B,让对象B将C的调用传递给A,达到C调用A的目的。这就是一种最简单的代理模式运用。
分类:
按照使用目的来划分,代理可以有八种,这里只说明以下几种:
Ø 远程代理:为一个位于不同的地址空间的对象提供一个局域代表对象。
Ø 虚拟代理:更据需要创建一个资源消耗较大的对象,使得对象只在需要是才被创建。
Ø 保护代理:控制对一个对象的访问权限。
结构
代理模式所涉及的角色有:
Ø 抽象主体角色----声明了真实主题和代理主题的共同接口,这样一来任何可以使用真实主题的地方都可以使用代理主题。
Ø 代理主题角色----代理主题角色内部含有对真实主题的引用,从而可以再任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口以便可以在任何时候都可以替代真实主题;控制对真实主题的引用,负者再需要的时候创建真实主题对象和删除主题对象;代理角色通常在将客户端调用传递给真实主题之前或者之后,都要执行某个动作,而不是单纯的将调用传递给真实主题对象。
Ø 真实主题角色----定义了代理角色所代表的真实对象这里给出一个非常简单的示意实现,实现的类图如下图所示:
反射映射与动态代理 自从JDK1.3以来,JAVA语言通过在java.lang.reglect库中提供了以下三个类直接支持代理模式:Porxy,InvocationHandler和Method。其中Proxy类使得设计师能在运行时间创建代理对象,具体如何实现与运用大家自行研究。
没有评论:
发表评论