代理模式的作用:
为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端 和目标对象之间起到中介的作用
代理模式一般涉及到的角色有:
a、抽象角色:声明真实对象和代理对象的共同接口
b、代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代 理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装
c、真实角色:代理角色所代表的真实对象,是我们最终要引用的对象
现实例子:
局长、秘书、某人
某人找局长办事,局长不是随便就能见到的,只好委托秘书,秘书在向局长报告,局长就办事。
参见程序Subject.java (要办的事)
参见程序RealSubject.java (局长)
参见程序ProxySubject.java (秘书)
参见程序Client.java (某人)
相关推荐
在代理模式中,主要有两种类型:静态代理和动态代理。 1.静态代理: 静态代理是指在编译期间就已经确定代理类和被代理类的关系,需要手动编写代理类。代理类需要实现与被代理类相同的接口,并且在代理类中持有一个被...
- 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事背景: 小明想...
静态代理代理模式,顾名思义就是提供一个代理类,可以访问原对象并且替原对象进行一些操作。 优点:使用代理模式可以在保证不修改原有类的同时(即满足对扩展开放,对修改关闭的原则),对原有类增加一些功能实现。
本工程是对静态代理,动态代理的测试,并且实现了对jdk动态代理的简单模拟!
Java各种代理模式以及AOP的实现代码 : 1.AspectJ - 静态代理 2. 动态代理 (1)JDK动态代理 (2)CGlib代理
java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法调用 * ...
设计模式之代理模式_静态代理的一个java实现的demo。主类在Client中。仅代码实现,可供初学者参考使用
目录: 简介 1.1 代理模式概述 1.2 静态代理概述 静态代理的基本结构 ...静态代理的实现步骤 3.1 定义代理接口 3.2 实现真实主题类 3.3 实现代理类 3.4 使用代理类 静态代理的优缺点 最佳实践与注意事项
java 代理模式实现代码及设计详解:动态代理模式、静态代理模式
代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个...
aop思想的java代码实现。代码分三个部分,一个是不使用aop思想实现日志记录,一个是使用静态代理实现aop,最后是使用java 1.3之后的动态代理机制实现。
资源列举了设计模式中的静态代理和动态代理的简单java实现,jdk1.8版本经过测试验证,对于想学习设计模式的童靴应该有所帮助
设计模式之代理模式Java实现和类设计图,包括静态代理和动态代理
三种方法实现代理模式:静态代理,动态代理,cglib代理
这是一个aop思想的实现。配合本博客文章《aop》。其中有3个包,一个没有实现aop,一个用静态代理实现aop,一个使用java的动态代理机制实现aop。
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 代理模式是常用的java设计模式,他的特征是代理类与委托类有...
静态代理设计模式1.1 静态代理 – 实现步骤1.2 静态代理 – 逻辑图 & 源码示例1.3 静态代理 – 优缺2. 装饰者设计模式 – 类似静态代理2.1 装饰者模式 – 实现步骤2.2 装饰者模式 – 逻辑图 & 源码示例2.3 装饰者...
- 静态代理 - 动态代理 - JDK 动态代理 - CGLIB 动态代理 - Javassist 代理 - ASM 代理 这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、RPC远程调用、...
代理类和被代理类实现了相同的接口,而且, 代理类持有被代理类的引用。
使用反射技术获取类的结构信息 使用反射技术 动态创建对象 动态修改查询属性值 动态执行方法 动态创建数组并存取元素 使用静态代理实现添加日志功能 使用动态代理实现添加日志功能