最近在巩固并发编程的知识,设计到静态代理模式,特此记录。
以婚庆公司的例子来理解静态代理模式
定义接口Marry
interface Marry {
void HappyMarry();
}
真实角色和代理角色都要实现Marry接口
/真实角色
class You implements Marry {
public void HappyMarry() {
System.out.println("韩老师要结婚了");
}
}
//代理角色
class WeddingCompany implements Marry {
//真实目标角色
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
public void HappyMarry() {
before();
this.target.HappyMarry(); //这就是真实对象
after();
}
private void after() {
System.out.println("婚庆公司,结婚之后收尾款");
}
private void before() {
System.out.println("婚庆公司,结婚之前准备酒席现场");
}
}
真实角色和代理角色都重写了HappyMarry方法,实现了多态。
主函数调用:
public static void main(String[] args) {
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.HappyMarry();
}
婚庆公司的业务逻辑封装在代理角色,真实角色的业务逻辑封装在真实角色,每次调用只需要传入真实角色即可,就可以完成整个婚庆流程