反射的应用:动态代理
代理设计模式 的原理:
使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象。
动态代理使用的场合:
> 调式
>
> 远程方法调用
动态代理相比于静态代理的有点:
抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理,这样,我们可以更加灵活和统一的处理众多的方法。
静态代理:
特点:代理类和被代理类在编译期间,就确定下来了
interface ClothFactory{
?
void productCloth();
?
}
?
class proxyClothFactory implements ClothFactory{
?
private ClothFactory factory;//用被代理类对象进行实例化
?
public proxyClothFactory(ClothFactory factory){
this.factory = factory;
}
?
?
要想实现动态代理,需要解决的问题?
问题一:如何根据加载到内存中的被代理类,动态的创建一个代理类及其对象
问题二:当通过代理类的对象调用方法a时,如何动态的去调用被代理类中的同名方法a
interface Human{
?
String getBelief();
void eat(String food);
}
?
class SuperMan implements Human{
?
原文:https://www.cnblogs.com/flypigggg/p/14674307.html