8.[代理模式(https://www.cnblogs.com/zuoxiaolong/p/pattern3.html)
分为两种:静态代理、动态代理
静态代理的操作步骤:
- 代理类一般要持有一个被代理的对象的引用。
- 对于我们不关心的方法,全部委托给被代理的对象处理。
- 自己处理我们关心的方法。
动态代理
- 动态代理有一个强制性要求,就是被代理的类必须实现了某一个接口,或者自己本身就是一个完整的接口
- 动态代理demo
//需要先声明一个接口
//Testclass
public class TestIntface{
//一个关闭方法
void close();
}
//代码过长 就不写啦 哈哈
public class Proxydemo<T> implements InvocationHandler{
//需要一个可以包含所有的对象 生命一个Object对象这样无论是什么类型都可以接受啦
private T tt;
//声明一个构造方法强制性接受一个参数 这边就不使用object了 使用泛型
public Proxydemo(T t){
this.tt=t;
}
//实现jdk的动态代理接口
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//可以在之前执行打印日志 或者之后执行 都可以 原理等同AOP
proxy=method.invoike(tt,args);
return proxy;
}
}