代理模式分为静态和动态代理
由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
所以说静态代理,主要是自己写代理子类。比如:
有一个图书接口:
public interface Book{ void read(String name); }
一个图书实现类:
public class BookImpl implement Book{ @Override public void read(String name){ System.out.printIn("阅读"+name); } }
一个图书代理类:
public class BookProxy implement Book{ private Book bookImpl; public BookProxy(Book bookImpl){ this.bookImpl = bookImpl; } @Override public void read(String name){ //这里就可以做自己要做的事,比如代理方法之前做什么 bookImpl.read(name); //代理方法之后做什么 } }
main方法测试
public class Main{ public static void main(String[] args){ Book bookImpl = new BookImpl(); Book proxy = new BookProxy(bookImpl); proxy.read("aaa"); } }
静态代理类优缺点
原文:https://www.cnblogs.com/LixiaoFeng1650062546/p/11474103.html