https://jesse505.github.io/2018/03/12/2018-03-12-Android-Dynamic-proxy/
静态代理与动态代理的区别在于代理类生成的时间不同,静态代理的代理类是在编译期间就已经存在的,动态代理的代理类是在运行时通过反射生成的。
在讲解静态代理与动态代理的区别之前,我们先来回顾代理模式相关的知识点,往下看。
为其他对象提供一种代理以控制对这个对象的访问。
说白了,我们可以理解为生活中常见的中介或者明星经纪人,我们买房一般都会通过中介,但是最后卖房的却是开发商,可以认为中介就是开发商的代理。
当不能访问或不想直接访问或访问某个对象存在困难时,我们可以通过一个代理对象来间接访问,为了客户端使用的透明性,我们应该保证代理对象和被代理对象应该实现同一个接口。
理论知识讲了一堆,有点绕口,我们直接讲静态代理吧,我们以买房为例定义接口:
public interface Buy {
void buyHouse(long money);
}
小明去买房,小明也就是被代理对象:
public class Xiaoming implements Buy {
@Override
public void buyHouse(long money) {
System.out.println("我买房了,用了"+money+" 钱 ");
}
}
中介,也就是代理对象: