代理模式
为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。
静态代理
简单说就是对接口实现2次,其中一次执行需要被代理对实现类,每次只能代理一个类。
动态代理
利用反射机制在运行时创建代理类。
JDK动态代理
主要使用对类是Proxy
和InvocationHandler
举例如下:
public interface IStudent {
/**
* 打印名称
*
* @param name
*/
void doSomething(String name);
/**
* 返回学生的数量
*
* @return
*/
int findStuCount();
}
实现类
public class StudentImpl implements IStudent {
/**
* 打印名称
*
* @param name
*/
@Override
public void doSomething(String name) {
System.out.println("我的名字是:" + name);
}
@Override
public int findStuCount() {
System.out.println("返回学生的数量");
return 10;
}
}
现在需要对这个接口打印日志。(假设这样对类很多,肯定不能使用静态代理了)