IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 简单动态代理demo -> 正文阅读

[Java知识库]简单动态代理demo

动态代理demo


/**
 * @Description: 定义一个女孩,声明这个女孩想干的事
 */
public interface Girl {

     void date();

     void watchMovie();
}


/**
 * @Date: 2022/3/5
 * @Version: 1.1
 * @Description:  定义一个可爱美丽的热辣美女
 */
public class HotGirl  implements Girl {

    public HotGirl(){
        System.out.println("从前有位火辣妹子,想找个帅哥出去玩," +
                "但是很难找到符合自己的,所以就去找代理机构帮忙");
    }

    @Override
    public void date() {
        System.out.println("===========女生心想,nice ,终于有帅哥和我约会啦===========");
    }

    @Override
    public void watchMovie() {
        System.out.println("===========女生心想,nice ,终于有帅哥和我看电影啦===========");
    }
                                                                                                                
/**                                                                                                                                                                                                              
 * @Date: 2022/3/5                                                                                              
 * @Version: 1.1                                                                                                
 * @Description: 定义一个微信代理类,可以用来约妹子的代理                                                                           
 */                                                                                                             
public class WXProxy implements InvocationHandler {                                                             
                                                                                                                
    //想要约妹子可以找我,(看,我的类里面就有妹子的属性)                                                                                
    //可以帮你找到妹子哦。                                                                                                
    private Girl girl;                                                                                          
                                                                                                                
    //这个代理有妹子的入驻。让这个代理能代理妹子                                                                                     
    public WXProxy(Girl girl){                                                                                  
        System.out.println("代理机构接待了这位妹子,让妹子留一份生活信息");                                                           
        this.girl = girl;                                                                                       
    }                                                                                                           
                                                                                                                
    //代理前需要做一些调查或者匹配                                                                                            
    void proxyFront(){                                                                                          
        System.out.println("代理机构会先看看这个男生的基本信息是否符合这位妹子," +                                                       
                "做过调查后,觉得蛮匹配的让他开始约女生");                                                                         
    }                                                                                                           
                                                                                                                
    //想要约妹子,那也是需要条件的 前面                                                                                         
    //你有没有钱,长的帅不帅呀                                                                                              
    @Override                                                                                                   
    public Object invoke(Object proxy, Method method, Object[] args)                                            
            throws Throwable {                                                                                  
        proxyFront();                                                                                           
        //只有实际在调方法的时候才会到这个                                                                                      
        Object invoke = method.invoke(girl,args);                                                               
        dateAfter();                                                                                            
        return invoke;                                                                                          
    }                                                                                                           
                                                                                                                
     //和妹子约出去后,需要去问下女孩的感受,是否合适,有没有第二次约会之类的                                                                      
      void dateAfter(){                                                                                         
          System.out.println("约会过后,代理机构去询问妹子,这个男生是否合适,有没有第二次约会意向之类的");                                          
      }                                                                                                         
                                                                                                                
      //可以看成代理机构正在为您生成女孩的基础资料(包括住址,身高,爱好等信息)                                                                    
      public Object getProxyInstance(){                                                                         
          System.out.println("代理机构就开始整理这位妹子的基础资料,并为她发布找帅哥出去玩的信息");                                              
        return Proxy.newProxyInstance(girl.getClass().getClassLoader(),girl.getClass().getInterfaces(),this );  
      }                                                                                                         
                                                                                                                
}                                                                                                               
                                                                                                                
/**
 * @Date: 2022/3/5
 * @Version: 1.1
 * @Description: 帅哥
 */
public class HandsomeBoy {


    public static void main(String[] args) {
        //有一位火辣妹子
        HotGirl hotGirl = new HotGirl();
        //入驻这个代理机构
        WXProxy wxProxy = new WXProxy(hotGirl);
        //代理机构呢,为这个帅哥(类)提供这个火辣妹子
        Girl girl = (Girl)wxProxy.getProxyInstance();
        System.out.println("这个时候有位帅哥,看到了这位妹子的信息,觉得不错,就去找代理机构咨询");
        //因为是在帅哥这个类的方法执行,可以看成帅哥成功约会到妹子
        girl.date();
        System.out.println("============================================");
        //可以看成帅哥成功和妹子看电影
        girl.watchMovie();
    }
}

输出结果:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:48:23  更:2022-03-06 12:50:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:48:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码