要实现静态代理,首先需要满足3个条件
1.一个真实角色
2.一个代理角色:要持有真实角色的引用
3.二者必须实现相同的接口
例子:
公共的接口:
public interface Marry {
void marry();
}
真实角色:
public class You implements Marry {
@Override
public void marry() {
System.out.println("you结婚了");
}
}
代理角色:
public class Company implements Marry {
private Marry you;
public Marry getYou() {
return you;
}
public void setYou(Marry you) {
this.you = you;
}
public void before(){
System.out.println("之前需要做的事情");
}
public void after(){
System.out.println("之后需要干的事情");
}
@Override
public void marry() {
before();
you.marry();
after();
}
}
测试方法:
public class Demo {
/**
* 静态代理设计模式
* 满足的要求
* 1.真实角色
* 2.代理角色:持有真实角色的引用
* 3.二者实现相同的接口
*/
public static void main(String[] args) {
/**
* 静态代理实现:
* 1.首先声明一个真实角色的实例。
* 2.然后声明一个代理角色的实例。
* 3.将真实角色注入代理角色。
* 4.调用代理角色的方法。
*/
You you = new You();
Company company = new Company();
company.setYou(you);
company.marry();
}
}
运行结果
之前需要做的事情
you结婚了
之后需要干的事情