代理模式很常见,我们生活中就有很多,比如中介,媒婆。今天我就以媒婆为例,写个demo来简单说明下
首先我们定义一下单身客户的目的和要求
public interface Person { void findLove(); }
然后单身狗提交自己的信息
@Data @AllArgsConstructor @NoArgsConstructor public class Jim implements Person { private String name; private String age; private String sex; @Override public void findLove() { System.out.println("I'm " + name + ",age:" + this.age + " and gender is " + this.sex); } }
接下来就是媒婆登场了,开始选择合适的另一半
public class MyProxy implements InvocationHandler { private Person person; public Object getInstance(Person target) throws Exception { this.person=target; Class zz=target.getClass(); return Proxy.newProxyInstance(zz.getClassLoader(),zz.getInterfaces(),this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("我是媒婆:您的性别是:男"); System.out.println("开始海选"); method.invoke(this.person,args); System.out.println("如何合适的话,就准备办事"); return null; } }
最后我们来验证下
public class TestFindLove { public static void main(String[] argas) throws Exception { Person person= (Person) new MyProxy().getInstance(new Jim("zhangsan","19","female")); person.findLove(); } }
结果如下:
恭喜成功通过媒婆找到另一半。