静态代理模式(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;}//真实对象中实现的方法@Overridepublic void happyMarry() {System.out.println(name + " 要结婚了,开心!");}}//代理对象static class MarryCompany implements Marry {private Marry target;public MarryCompany(Marry target) {this.target = target;}//代理对象的同一个方法中可以实现更多功能@Overridepublic 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("结婚前:布置现场");}}}
