0
点赞
收藏
分享

微信扫一扫

静态代理与动态代理

1、代理模式的原理:

使用一个代理将对象包装起来,然后用该代理对象取代原始对象,任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上

2、静态代理

实现Runnable接口的方法创建多线程。

Class MyThread implements Runnable{}          //相当于代理类

Class Thread implements Runnable{} //被代理对象

main(){

MyThread t = new MyThread();

Thread thread = new Thread(t);

thread.start();//启动线程,调用线程的run()

}

2.2静态代理的缺点:

1)代理类和目标对象的类都在编译期间确定下来,不利于程序的扩展。

2)每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理

3、动态代理的特点:

动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象

4、动态代理的实现:

4.1需要解决的两个问题

问题一:如何根据加载到内存中的被代理类,动态创建一个代理类及其对象

通过Proxy.newProxyInstance()实现

问题二:当通过代理类的对象调用方法a时,如何 动态的去调用被代理类中的同名方法a

通过InvocationHandler接口的实现类及其方法invoke()

4.2代理实现

未完待续

举报

相关推荐

0 条评论