代理模式
代理模式是常用的JAVA设计模式,代理类主要负责为委托类预处理消息、过虑消息、转发给委托类、以及事后处理消息等。
代理类和委托类之间通常会存在关联关系,一个代理类对象关联一个委托类对象,代理类对象不实现真下服务,而是调用委托类对象的相关方法。
按照代理类的创建时期,代理类可以分为两种:
静态代理:由程序员自行创建,或特定工具自动生成代码,程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时由程序通过反射机制动态创建。
代理模式的两种实现方式:
JDK:以代理接口方式实现,代理类和委托类有共同的接口,代理类只负责代理实现了该接口的类。(只能对实现了接口的类进行代理)
cglib:以继承方式实现,代理类是委托类的子类,并覆盖其中方法实现增强。(不能对final类进行代理)