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

代理模式-动态代理(基于接口,JDK动态代理)cglib代理和jdk动态代理区别

10小时前CN2资讯



动态代理


  • ​​静态代理​​
  • ​​动态代理​​


静态代理

这里我们介绍了静态代理,也知道了静态代理的一些缺点
​​代理模式-静态代理​​

下面我们就介绍动态代理

动态代理

JDK动态代理,需要2个类,基于接口,用到反射

  • Proxy:代理
  • InvocationHendler:调用处理程序

基于上面的静态代理,我们现在代码调整有一下,什么Faker英雄联盟代打啊,飞牛FLY王者荣耀代打啊,我们都不要了,开一个代练公司,来实现动态代理。

我们的动态代理为

package com.lingaolu.impl;

import com.lingaolu.service.PlayerLogin;
import java.lang.reflect.*;

/**
* @author 林高禄
* @create 2020-11-09-18:12
*/
public class ActingTrainingCompany implements InvocationHandler {

private PlayerLogin playerLogin;

public ActingTrainingCompany(PlayerLogin playerLogin) {
this.playerLogin = playerLogin;
}

public Object getProxy(){
return Proxy.newProxyInstance(this.getClass().getClassLoader(),playerLogin.getClass().getInterfaces(),this);
}

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object invoke = method.invoke(playerLogin, args);
return invoke+"变为王者";
}
}

客户测试

我们还可以做的更完美一些,因为目前我们动态代理的只是PlayerLogin抽象类,我们可以修改代码,改为万能的动态代理类

package com.lingaolu.impl;

import java.lang.reflect.*;

/**
* @author 林高禄
* @create 2020-11-09-18:12
*/
public class ActingTrainingCompany implements InvocationHandler {

private Object target;

public ActingTrainingCompany(Object target) {
this.target= target;
}

public Object getProxy(){
return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
}

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object invoke = method.invoke(target, args);
return invoke+"变为王者";
}
}


现在我们加需求,吃鸡也要代练,那么只需要我们的抽象角色和真实角色添加相关方法即可,动态代理无需修改



客户测试只需要再调用吃鸡方法即可,动态代理代码无需改变



这就解决了静态代理的缺点




    你可能想看:

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

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

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

    分享给朋友:

    “代理模式-动态代理(基于接口,JDK动态代理)cglib代理和jdk动态代理区别” 的相关文章

    丽莎主机8折优惠码:轻松获取,最高享7.2折,立即省钱!

    优惠码的获取与使用方法 在丽莎主机的官网上,获取8折优惠码非常简单。你只需要在结账页面输入优惠码✂️TS-CBP205DQJE,就能立即享受折扣。这个优惠码不仅适用于新用户,老用户在续费时也能继续使用。选择年付套餐,还能叠加8折优惠,最高可享7.2折的优惠力度。这样的优惠组合,让你在享受高品质VPS...

    樱花VPS:高性价比的日本虚拟专用服务器推荐

    樱花VPS是一个由日本知名主机提供商Sakura Internet Inc.推出的虚拟专用服务器产品。在选择VPS时,用户常常关注服务的稳定性、速度和价格等方面,而樱花VPS正是在这些核心领域表现出色,吸引了一大批用户的关注。 首先,樱花VPS以其高性价比闻名。作为国内前三强的VPS提供商。其规模化...

    VPSCheap评测:低价VPS服务的最佳选择与性能分析

    VPSCheap的概述 我第一次听说VPSCheap的时候,是在一个热闹的VPS论坛上。这个成立于2010年的主机商,主要提供KVM型VPS服务,其特点是低价格和无限流量。从那以后,我对VPSCheap的关注逐渐加深。它的数据中心位于美国达拉斯,给不少用户带来了良好的使用体验。论坛上的用户在讨论各自...

    如何在Linux中指定DNS服务器设置教程

    在开始讨论如何在Linux系统中指定DNS之前,我们需要明白DNS服务器的作用与重要性。DNS,全称域名系统,是将人类易读的域名转换为计算机能够理解的IP地址的系统。想象一下,如果没有DNS,我们每次访问一个网站都得记住复杂的数字IP地址,那将是多么麻烦的一件事。因此,选择一个合适的DNS服务器,不...

    搬瓦工VPS与CN2线路解析:提升网络稳定性与性价比

    搬瓦工(BandwagonHost)是一家值得关注的国外VPS主机服务商,因其性价比高、性能优异而在用户中口耳相传。最初我对搬瓦工的了解并不多,但随着对VPS服务需求的增加,自然也对市场上比较有名的服务商产生了浓厚的兴趣。在我研究的过程中,搬瓦工的特点确实吸引了我的眼球,尤其适合需要稳定网络和较高性...

    HostYun:高性价比VPS服务的理想选择

    HostYun,最早被称作主机分享,成立于2008年,专注于提供性价比极高的VPS服务。在众多IDC品牌中,HostYun凭借其低价策略迅速占领了一席之地。作为一个以KVM和XEN虚拟化技术为基础的平台,HostYun不仅满足了用户对低成本服务的需求,也为学习、测试和小型项目的部署提供了理想的选择。...