设计模式之代理模式

代理模式很常见,我们生活中就有很多,比如中介,媒婆。今天我就以媒婆为例,写个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();
    }
}

结果如下:

 恭喜成功通过媒婆找到另一半。

原文地址:https://www.cnblogs.com/xzshare/p/12384589.html