java基础18:java动态代理
来源:互联网 发布:校园网络投标书 编辑:程序博客网 时间:2024/06/07 05:42
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤
消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。
Java 动态代理作用是什么?
首先动态代理是设计模式当中代理模式的一种。首先介绍下代理模式,再介绍Java中的动态代理实践。1,什么是代理模式?
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
2,代理模式有什么好处?
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
3,代理模式一般涉及到的角色有:
抽象角色:声明真实对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。代理角色:代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象,同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:定义了代理对象所代表的目标对象,代理角色所代表的真实对象,是我们最终要引用的对象,定义了代理对象所代表的目标对象。
public abstract class AbstractObject { //操作 public abstract void operation();}
public class RealObject extends AbstractObject { @Override public void operation() { //一些操作 System.out.println("一些操作"); }}
public class ProxyObject extends AbstractObject{ RealObject realObject = new RealObject(); @Override public void operation() { //调用目标对象之前可以做相关操作 System.out.println("before"); realObject.operation(); //调用目标对象之后可以做相关操作 System.out.println("after"); }}
public class Client { public static void main(String[] args) { // TODO Auto-generated method stub AbstractObject obj = new ProxyObject(); obj.operation(); }}
0 0
- Java基础:动态代理
- Java基础----动态代理
- java基础18:java动态代理
- [ java ] java基础动态代理!
- Java基础加强---动态代理
- 关于java基础--动态代理
- java基础之动态代理
- Java 基础加强 - 代理与动态代理
- java基础__代理、动态代理
- Java基础:静态代理和动态代理
- 【java基础】静态代理 VS 动态代理
- java基础与基础加强 动态代理/代理模式
- Java 代理,动态代理
- 【黑马程序员】Java基础加强18:JDK1.5动态代理
- java之架构基础-动态代理&cglib
- JAVA--基础加强_动态代理
- Java基础加强之动态代理
- java基础加强--动态代理技术
- 使用SlidingDrawer的隐藏/显示搜索框
- Java包(package)
- MQ技术文档
- Android开发之Java集合类性能分析
- Android下获取开机时间
- java基础18:java动态代理
- View类的onMeasure方法介绍
- 自定义FrameLayout 实现屏幕一张张翻
- Android动态加载技术三个关键问题详解
- Eclipse中LogCat突然停止工作的解决
- Task和Activity相关的一些属性
- 计算语言学之语料库
- 读《程序员向架构师转型必备》
- Java并发编程实践(十)