静态代理模式(StaticProxy)
真实对象和代理对象都要实现同一个接口, 确保拥有相同方法名的方法, 代理对象代理真实角色, 代理对象的方法可以增加真实对象同名方法中没有的方法
public class StaticProxy {
//以结婚为例
public static void main(String[] args) {
//创建真实对象实例
Person wang = new Person("Wang");
//创建代理对象实例
MarryCompany company = new MarryCompany(wang);
//调用代理对象的方法,间接调用真实对象的方法和代理对象的其他方法
company.happyMarry();
}
//接口
interface Marry {
void happyMarry();
}
//真实对象
static class Person implements Marry {
private String name;
public Person(String name) {
this.name = name;
}
//真实对象中实现的方法
@Override
public void happyMarry() {
System.out.println(name + " 要结婚了,开心!");
}
}
//代理对象
static class MarryCompany implements Marry {
private Marry target;
public MarryCompany(Marry target) {
this.target = target;
}
//代理对象的同一个方法中可以实现更多功能
@Override
public void happyMarry() {
target.happyMarry(); //真实对象的方法
thing1(); //代理对象增加的方法
thing2();
thing3();
}
private void thing3() {
System.out.println("婚后,结清款项");
}
private void thing2() {
System.out.println("宴请亲朋好友");
}
private void thing1() {
System.out.println("结婚前:布置现场");
}
}
}