浅谈JAVA设计模式之——代理模式(proxy)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45568963

一、概述

为其他对象提供一种代理以控制对这个对象的访问。

二、适用性

1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。

2.虚代理(VirtualProxy)根据需要创建开销很大的对象。

3.保护代理(ProtectionProxy)控制对原始对象的访问。 4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。

三、参与者

1.Proxy 保存一个引用使得代理可以访问实体。若RealSubject和Subject的接口相同,Proxy会引用Subject。 提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。 控制对实体的存取,并可能负责创建和删除它。 其他功能依赖于代理的类型:

2.RemoteProxy负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求。

3.VirtualProxy可以缓存实体的附加信息,以便延迟对它的访问。

4.ProtectionProxy检查调用者是否具有实现一个请求所必需的访问权限。

5.Subject 定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

6.RealSubject 定义Proxy所代表的实体

四、类图

五、示例

Proxy

package com.lyz.design.proxy;
/**
 * Proxy
 * @author liuyazhuang
 *
 */
public class ProxyObject implements Object {
    Object obj;

    public ProxyObject() {
        System.out.println("这是代理类");
        obj = new ObjectImpl();
    }

    public void action() {
        System.out.println("代理开始");
        obj.action();
        System.out.println("代理结束");
    }
}

Subject

package com.lyz.design.proxy;
/**
 * Subject
 * @author liuyazhuang
 *
 */
public interface Object {
    void action();
}

RealSubject

package com.lyz.design.proxy;
/**
 * RealSubject
 * @author liuyazhuang
 *
 */
public class ObjectImpl implements Object {
    public void action() {
        System.out.println("========");
        System.out.println("========");
        System.out.println("这是被代理的类");
        System.out.println("========");
        System.out.println("========");
    }
}

Test

package com.lyz.design.proxy;
/**
 * Test
 * @author liuyazhuang
 *
 */
public class Test {
    public static void main() {
    	Object obj = new ProxyObject();
        obj.action();
    }
}

Result

这是代理类
代理开始
========
========
这是被代理的类
========
========
代理结束
时间: 2024-11-03 05:42:18

浅谈JAVA设计模式之——代理模式(proxy)的相关文章

浅谈JAVA设计模式之——外观模式

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45568655 一.概述 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 二.适用性 1.当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越 复杂.大多数模式使用时都会产生更多更小的类.这使得子系统更具可重用性,也更容 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困

浅谈JAVA设计模式之——桥接模式(Bridge)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45457969 一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 二.适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系. 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换. 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充. 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充. 3.对一

浅谈JAVA设计模式之——组合模式(Composite)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45458081 一.概述 将对象组合成树形结构以表示"部分-整体"的层次结构."Composite使得用户对单个对象和组合对象的使用具有一致性. 二.适用性 1.你想表示对象的部分-整体层次结构. 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象. 三.参与者 1.Component 为组合中的对象声明接口. 在适当的情况下,实现

浅谈JAVA设计模式之——状态模式(State)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45600711 一.概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 二.适用性 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为. 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态. 这个状态通常用一个或多个枚举常量表示. 通常,有多个操作包含这一相同的条件结构. Sta

浅谈JAVA设计模式之——命令模式(Command)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45569323 一.概述 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 二.适用性 1.抽象出待执行的动作以参数化某对象. 2.在不同的时刻指定.排列和执行请求. 3.支持取消操作. 4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍. 5.用构建在原语操作上的高层操作构造一个系统. 三.参与者 1.Co

浅谈JAVA设计模式之——迭代器模式(interator)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45599951 一.概述 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 二.适用性 1.访问一个聚合对象的内容而无需暴露它的内部表示. 2.支持对聚合对象的多种遍历. 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代). 三.参与者 1.Iterator 迭代器定义访问和遍历元素的接口. 2.ConcreteItera

浅谈-Java设计模式之动态代理

动态代理模式(Dynamic Proxy Pattern): 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的. 首先我们先来看看java的API帮助文档是怎么样对这两个类进行描述的: InvocationHandler该接口唯一方法 invoke(Object proxy, Method method, Object[] args) Object

java设计模式6——代理模式

java设计模式6--代理模式 1.代理模式介绍: 1.1.为什么要学习代理模式?因为这就是Spring Aop的底层!(SpringAop 和 SpringMvc) 1.2.代理模式的分类: 静态代理 动态代理 1.3.代理模式关系图(以租房子为例) 2.静态代理 2.1.角色分析: 抽象角色:一般会使用接口或者抽象类来解决 真实角色:被代理的角色 代理客户:代理真实角色.代理真实角色后,我们一般会做一些附属的操作 客户:访问代理对象的人 2.2.例1(租房子演示) 2.2.1.抽象角色实现(

JAVA设计模式(3)----代理模式

1.  什么是代理模式?Proxy Pattern 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 通俗的讲,代理模式就是我很忙没空理你,你要想找我可以先找我的代理人,代理人和被代理人继承同一个接口.代理人虽然不能干活,但是被代理的人可以干活. 这个例子中有水浒传中的这么几个人:名垂青史的潘金莲,王婆,西门大官人.西门庆想要找潘金莲,需要找王婆做代理.首先定义一个接口:Kin