5、静态代理模式
5、静态代理模式
/**
* 1、真实对象和代理对象实现同一个接口;
* 2、代理对象,代理真实角色;
*/
public class StaticProxy {
public static void main(String[] args) {
//真实结婚对象
Person person = new Person();
person.HappyMarry();
//通过代理角色调用,WeddingCompany 的构造方法有参数
WeddingCompany weddingCompany = new WeddingCompany(person);
weddingCompany.HappyMarry();
System.out.println("*****************************");
new WeddingCompany(new Person()).HappyMarry();
}
}
interface Marry{
void HappyMarry();
}
//真实角色
class Person implements Marry{
@Override
public void HappyMarry() {
System.out.println("准结婚了");
}
}
//代理角色,》真实目标角色
class WeddingCompany implements Marry{
//准备结婚的人
private Marry target;
//构造方法,Alt+insert, 有参数
public WeddingCompany(Marry target) {
//真实对象
this.target = target;
}
@Override
public void HappyMarry() {
befor();
this.target.HappyMarry();
after();
}
public void befor(){
System.out.println("准备婚礼现场");
}
public void after(){
System.out.println("缴纳婚庆尾款");
}
}