前言
代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。分为静态代理、动态代理。
静态代理:是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
静态代理具体实现
1. 你要做的事情也就是接口
/**
* @author lane
* @date 2021年03月22日 下午9:46
*/
public interface FindJob {
/**
* 找工作
* @author lane
* @date 2021/3/22 下午9:46
*/
public void find();
}
2. 你具体的实现也就是实现类
/**
* @author lane
* @date 2021年03月22日 下午9:47
*/
public class FindJobImpl implements FindJob {
@Override
public void find() {
System.out.println("找啊找啊找工作");
}
}
3. 代理实现你要做的事情
/**
* 招聘网代理你的事情
* @author lane
* @date 2021年03月22日 下午9:48
*/
public class FindJobProxy implements FindJob{
private FindJob findJob;
public FindJobProxy(FindJob findJob){
this.findJob = findJob;
}
@Override
public void find() {
System.out.println("登陆招聘网站上传简历");
findJob.find();
System.out.println("企业下载你的简历");
}
}
4. 测试
/**
* @author lane
* @date 2021年03月22日 下午9:52
*/
public class Test {
public static void main(String[] args) {
FindJob findJob = new FindJobImpl();
//自己去实现方法
findJob.find();
System.out.println("使用静态代理实现:");
FindJobProxy findJobProxy = new FindJobProxy(findJob);
//代理实现你的方法
findJobProxy.find();
}
}
测试结果
找啊找啊找工作
使用静态代理实现:
登陆招聘网站上传简历
找啊找啊找工作
企业下载你的简历
总结
静态代理一般不怎么用,代理内容一般固定比如事务,如果很多类需要代理就会很麻烦,就需要动态代理了,下篇文章写动态代理具体实现。