当前位置:首页 > CN2资讯 > 正文内容

代理模式之动态代理的实现——jdkjdk动态代理

9小时前CN2资讯

动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。

动态代理最大的特点就是没有代理类
动态代理有两种实现方式,CGLib与jdk,这里用的是jdk实现动态代理
就静态代理举个栗子

故事背景

有两个人,有很多money的张三和24K纯屌丝李四,他们做着做同样的事情——惹上了官司和吃饭,张三就雇用专业的律师打官司,饭自己吃;李四雇不起律师,只好自己上,饭当然也是要自己吃……用动态代理实现如下

接口

package .service;
/**
* 定义一个接口(一类人要做的事情)
* @author 浪丶荡
*
*/
public interface ISomeService {
//打官司
public String Litigate();
//吃饭
public String eat();
}

目标类

package .service;
/**
* 目标类
* @author 浪丶荡
*
*/
public class ISomeServiceImp implements ISomeService {

@Override
public String Litigate() {
return "自己打官司,输了";
}

@Override
public String eat() {
return "自己吃饭";
}

}

测试方法

package .test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import .service.ISomeService;
import .service.ISomeServiceImp;
public class MyTest {
public static void main(String[] args) {
//有money人张三
final ISomeService zhangsan = new ISomeServiceImp();
//屌丝李四
ISomeService lisi = new ISomeServiceImp();

//张三请的律师打官司,饭自己吃
ISomeService sp = (ISomeService) Proxy.newProxyInstance(
zhangsan.getClass().getClassLoader(), //目标类的类加载器
zhangsan.getClass().getInterfaces(), //目标类所实现的所有接口
new InvocationHandler() { //匿名内部类
/**
* proxy 代理对象
* method 目标方法(代理的业务)
* args 目标方法的参数列表
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {

if(method.toString().contains("eat")){//吃饭就不用律师代劳了,自己来
return (String)method.invoke(zhangsan, args);//反射,调用张三的方法;
}
return "律师打官司,赢了";

}
});
System.out.println("zhangsan"+sp.Litigate()+"-----"+sp.eat());
//苦逼的李四自己打官司,自己吃饭
System.out.println("lisi"+lisi.Litigate()+"-----"+lisi.eat());
}
}

结果

zhangsan律师打官司,赢了-----自己吃饭
lisi自己打官司,输了-----自己吃饭


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32084.html

    分享给朋友:

    “代理模式之动态代理的实现——jdkjdk动态代理” 的相关文章

    IP地址可以是255吗?详解IP地址的定义、结构与未来发展趋势

    IP地址的定义与作用 IP地址是互联网协议(IP)中用于标识网络上设备的逻辑地址。它就像是互联网世界的“门牌号”,帮助数据包准确地找到目的地。没有IP地址,设备之间就无法相互识别和通信。无论是电脑、手机还是服务器,只要连接到网络,都会分配一个唯一的IP地址。它的存在让互联网的运作变得有序且高效。 I...

    如何解决Hostodo在下午无法访问的问题

    Hostodo概述 Hostodo是一家成立于2014年的美国IDC主机商,起初是为了满足不断增长的互联网用户需求而成立的。我感到很高兴能介绍这家公司,因为他们在VPS市场上逐渐建立了自己的声誉。Hostodo的总部位于美国,数据中心分布在拉斯维加斯、坦帕和底特律,这为他们提供了良好的基础设施支持。...

    深入了解俄罗斯时区对生活与经济的影响

    在这个广袤的国家,谈论俄罗斯时区就如同打开了一本极其丰富的地理和文化百科全书。俄罗斯作为世界上面积最大的国家,领土纵深可谓无比广阔,从西欧一直延伸到东亚。这种东西跨度的特性,使得时区的划分显得尤为重要。俄罗斯实际上拥有11个时区,每个时区不仅仅是时间的概念,更承载着各自地区独特的人文、经济和社会习惯...

    OneTechCloud:高性价比VPS与独立服务器的最佳选择

    在了解OneTechCloud之前,我们先来探讨一下它的成立背景和发展历程。OneTechCloud,或称易科云,是一家自2019年就开始运营的国内小型主机商。虽然成立时间不久,但它迅速在市场上获得了一定的知名度。作为由中国团队经营的公司,OneTechCloud专注于提供海外VPS和独立服务器服务...

    VPS搭建:从选择提供商到后续管理的全面指南

    什么是VPS搭建? 了解VPS搭建的第一步是弄清楚VPS的定义。VPS,全称为虚拟专用服务器,是将一个物理服务器划分成多个独立的虚拟服务器。每个VPS都具有自己的操作系统和资源,能够像独立服务器一样运行各种应用程序。这种方式提供了更高的灵活性和可控性,相比共享主机来说,用户能够自主安装软件,配置环境...

    泰国VPS市场分析:高效、可靠的云服务器选择

    泰国VPS市场概述 近年来,泰国的VPS市场迎来了快速的发展。作为东南亚的一个重要互联网和商业枢纽,泰国吸引了越来越多的国内外服务商。这一切的变化让我感受到了市场的活力,尤其是在曼谷,一个充满竞争和机会的城市。在这片土地上,VPS服务逐渐成为了企业和个人用户实现数字化转型的重要工具。 在研究泰国VP...