8.[代理模式(https://www.cnblogs.com/zuoxiaolong/p/pattern3.html)
分为两种:静态代理、动态代理

静态代理的操作步骤:
  1. 代理类一般要持有一个被代理的对象的引用。
  2. 对于我们不关心的方法,全部委托给被代理的对象处理。
  3. 自己处理我们关心的方法。

动态代理
  1. 动态代理有一个强制性要求,就是被代理的类必须实现了某一个接口,或者自己本身就是一个完整的接口
  2. 动态代理demo
  1. //需要先声明一个接口
  2. //Testclass
  3. public class TestIntface{
  4. //一个关闭方法
  5. void close();
  6. }
  7. //代码过长 就不写啦 哈哈
  8. public class Proxydemo<T> implements InvocationHandler{
  9. //需要一个可以包含所有的对象 生命一个Object对象这样无论是什么类型都可以接受啦
  10. private T tt;
  11. //声明一个构造方法强制性接受一个参数 这边就不使用object了 使用泛型
  12. public Proxydemo(T t){
  13. this.tt=t;
  14. }
  15. //实现jdk的动态代理接口
  16. @Override
  17. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  18. //可以在之前执行打印日志 或者之后执行 都可以 原理等同AOP
  19. proxy=method.invoike(tt,args);
  20. return proxy;
  21. }
  22. }