java的静态代理和2种动态代理(未完,待续)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java的静态代理和2种动态代理(未完,待续),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3394字,纯文字阅读大概需要5分钟。
内容图文
package com.liubingfei.test.proxy.staticproxy; /** * @author LiuBingFei * @desc 接口,定义抽象方法:卖房子,出租房子。 * @date 2020/3/5 22:09 * @return */ public interface house { // 卖房子 public abstract void sell_house(); // 出租房子 public abstract void rental_house(); }
package com.liubingfei.test.proxy.staticproxy; /** * @author LiuBingFei * @desc * @date 2020/3/5 22:12 * @return */ public class house_owner implements house{ @Override publicvoid sell_house() { System.out.println("房主卖房子"); } @Override publicvoid rental_house() { System.out.println("房主出租房子"); } }
package com.liubingfei.test.proxy.staticproxy; /** * @author LiuBingFei * @desc * @date 2020/3/5 22:14 * @return */ public class house_proxy implements house { //房主private house_owner owner; public house_proxy(house_owner owner) { this.owner = owner; } @Override //调用房主卖房子publicvoid sell_house() { owner.sell_house(); } @Override //调用房主出租房子publicvoid rental_house() { owner.rental_house(); } }
package com.liubingfei.test.proxy.staticproxy; import org.junit.Test; /** * @author LiuBingFei * @desc * @date 2020/3/5 22:19 * @return */ public class static_proxy { @Test // 静态代理:房产中介house_proxy代理房主house_owner卖房子 // 静态代理:代理类和被代理类,实现同样的接口或者继承同样的父类。在程序运行前就编译好,叫做静态代理。 public void proxy() { house_proxy proxy = new house_proxy(new house_owner()); proxy.sell_house(); proxy.rental_house(); } }
package com.liubingfei.test.proxy.dynamicproxy.jdk_proxy; /** * @author LiuBingFei * @desc 接口,定义抽象方法:卖房子,出租房子。 * @date 2020/3/5 22:09 * @return */ public interface House { // 卖房子 public abstract void sell_house(); // 出租房子 public abstract void rental_house(); }
package com.liubingfei.test.proxy.dynamicproxy.jdk_proxy; /** * @author LiuBingFei * @desc * @date 2020/3/5 22:12 * @return */ public class House_owner implements House{ @Override publicvoid sell_house() { System.out.println("房主卖房子"); } @Override publicvoid rental_house() { System.out.println("房主出租房子"); } }
package com.liubingfei.test.proxy.dynamicproxy.jdk_proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * @author LiuBingFei * @desc * @date 2020/3/5 22:48 * @return */ public class House_proxy implements InvocationHandler { private House house; public House_proxy(House house) { this.house = house; } /** * Proxy.newProxyInstance(param1, param2, param3) * param1: ClassLoader对象; * param2: 被代理类的接口数组,因为代理底层要根据接口生成; * param3:参数类型是InvocationHandler即可,this即是当前类,它实现了这个接口。 * @return 返回一个代理类 */public Object getProxy(){ Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{House.class}, this); return proxy; } /** * * @param proxy 代理对象,就是房产中介 * @param method 代理对象中的方法 * @param args 代理对象中的参数 * @return * @throws Throwable */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object invoke = method.invoke(house, args); System.out.println("中介收取中介费"); return invoke; } }
package com.liubingfei.test.proxy.dynamicproxy.jdk_proxy; import org.junit.Test; /** * @author LiuBingFei * @desc * @date 2020/3/5 23:14 * @return */ public class Jdk_proxy { @Test public void proxy() { // 传入被代理类,创建动态代理类的对象。 House_proxy house_proxy = new House_proxy(new House_owner()); //获得代理类,强转成接口类型。 House house = (House) house_proxy.getProxy(); //使用多态的向下造型 house.sell_house(); house.rental_house(); } }
原文:https://www.cnblogs.com/liubingfei/p/12424010.html
内容总结
以上是互联网集市为您收集整理的java的静态代理和2种动态代理(未完,待续)全部内容,希望文章能够帮你解决java的静态代理和2种动态代理(未完,待续)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。