zoukankan      html  css  js  c++  java
  • 设计模式之代理模式

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

    结果如下:

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

  • 相关阅读:
    python3.6虚拟环境
    安装VMwareTools
    Vsftpd配置(Centos7)
    Sftp配置
    权限问题
    Zabbix5.0微信报警
    K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查
    Getting Started and Beyond|云原生应用负载均衡选型指南
    混部之殇-论云原生资源隔离技术之CPU隔离(一)
    云原生技术开放日PPT大放送 | 五星级的云原生开发体验
  • 原文地址:https://www.cnblogs.com/xzshare/p/12384589.html
Copyright © 2011-2022 走看看