当服务对象和代理对象实现了统一接口
那么服务对象就可以利用代理对象实现自己无法实现的功能
class StaticAgent {
public static void main(String[] args) {
new WeddingCompany(new Person()).happyMarry();
}
}
// 这里我们定义一个结婚的接口
interface Marry{
void happyMarry();
}
// 这里我们定义一个Person类实现结婚的接口
class Person implements Marry{
@Override
public void happyMarry(){
System.out.println("结婚啦");
}
}
// 这里我们定义一个婚庆公司的类实现结婚的接口
class WeddingCompany implements Marry{
private Marry target;
public WeddingCompany(Marry target){
this.target = target;
}
@Override
public void happyMarry(){
before();
target.happyMarry();
after();
}
public void before(){
System.out.println("婚礼前布置会场");
}
public void after(){
System.out.println("婚礼后收拾场地");
}
}
// TODO 动态代理
原文:https://www.cnblogs.com/rainful/p/14905350.html