jdk动态代理
代码实现
满足代理模式应用场景的三个必要条件
- 两个角色:执行者、被代理对象
- 注重过程,必须要做,被代理对象没时间做或者不想做(怕羞羞),不专业
- 执行者必须拿到被代理对象的个人资料(执行者持有被代理对象的引用)
jdk的动态代理通过调用Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) 方法,生成目标对象的代理类,interfaces参数为目标对象所实现的全部接口,InvocationHandler的实现类负责在调用方法前后处理自定义逻辑,下面我们以媒婆介绍对象为背景实现:
1 首先是需要找对象的人
public interface Person {
void findLove();
String getSex();
String getName();
}
---
public class XiaoFang implements Person{
private String sex = "女";
private String name = "小芳";
@Override
public void findLove() {
System.out.println("我叫" + this.name + ",性别:" + this.sex + "我找对象的要求是:");
System.out.println("高富帅");
System.out.println("有房有车的");
System.out.println("身高要求180cm以上,体重70kg");
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2 小芳不好意思找对象,就要找媒婆来搭桥