当前位置: 首页 > wzjs >正文

广东两学一做考学网站nba最新消息交易情况

广东两学一做考学网站,nba最新消息交易情况,做公司网站排名,黄页模式Java实现动态代理 Java中的动态代理是一种在运行时动态创建代理类和对象的机制,允许开发者在不修改原类代码的情况下,增加额外的功能。主要通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现。 准备要求: 1.接…

Java实现动态代理

        Java中的动态代理是一种在运行时动态创建代理类和对象的机制,允许开发者在不修改原类代码的情况下,增加额外的功能。主要通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现。

准备要求:

1.接口:动态代理要求目标对象必须实现一个或多个接口

2.实现InvocationHandler:这是一个接口,你需要在代理类中实现它,用来定义代理对象在处理方法调用时的行为。

3.Proxy类:这是提供新代理实例的类。它包含静态方法newProxyInstance,用于在运行时创建代理对象。

实现流程:

1. 定义接口:定义一个或多个接口,这些接口将被代理类实现。

2. 实现InvocationHandler:创建一个类实现InvocationHandler接口,并在invoke方法中定义代理逻辑。

3. 创建代理对象:使用Proxy.newProxyInstance方法创建代理对象。

关系示意图:

示例:

1.首先创建被代理对象的接口:

public interface IService {public void sayHello();public void sayGoodbye();
}

2.创建该接口的实现类:

public class ServiceImpl implements IService{@Overridepublic void sayHello() {System.out.println("hello world");}@Overridepublic void sayGoodbye() {System.out.println("goodbye world");}
}

3.编写增强类(实现InvocationHandler接口的类)增强我们的接口实现类:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;//增强类
public class ServiceHandler implements InvocationHandler {//引入需要被增强类的实例对象private Object target;public ServiceHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("Before method: " + method.getName());//通过反射机制来执行原始方法Object result = method.invoke(target, args);System.out.println("After method: " + method.getName());return result;}
}

4.客户端代码:

import java.lang.reflect.Proxy;public class Main {public static void main(String[] args) {//创建被增强类(我的接口的实现类)对象ServiceImpl service = new ServiceImpl();//创建增强类(InvocationHandler接口的实现类)对象ServiceHandler handler = new ServiceHandler(service);//生成代理对象(被增强过的IService实例对象)IService proxy = (IService) Proxy.newProxyInstance(IService.class.getClassLoader(),new Class[]{IService.class},handler);proxy.sayHello();proxy.sayGoodbye();}
}

运行结果:

        可以看到,我们成功地通过动态代理的方式对Service实现了增强。原本只会打印一句"Hello world",现在调用sayHello方法时,还会额外进行两句话地打印。在实际开发中,不一定就只是打印两句话,还可以干更多的事情。 

http://www.dtcms.com/wzjs/513068.html

相关文章:

  • 做门户网站需要注册公司吗推广营销网络
  • 网站开发预算编制台州网络推广
  • bootstrap宣传网站模板云客网平台
  • 宜兴做网站多少钱百度竞价ocpc
  • 网站制作推广需要多少钱seo有哪些经典的案例
  • 网站项目下载海外广告投放公司
  • 阳泉网站建设哪家便宜站长工具
  • WordPress 打赏插件指定关键词排名优化
  • 网站模板 介绍360安全网址
  • 有需要做网站的吗常见的网络营销方式有哪些
  • 青秀区网站建设东莞网络推广培训
  • 网站建设招标评分表拼多多seo是什么意思
  • 酒吧网站模板腾讯广告投放平台官网
  • 橙云 php网站建设广州seo优化排名公司
  • 现在帮别人做网站赚钱不中国关键词
  • 在某外国网站做代购百度电商平台app
  • 淘客联盟做任务网站网址大全浏览器下载
  • 什么网站可以申请做汉语老师成全视频免费观看在线看
  • 做网站没什么用啊老师别人强收录好的网站有哪些
  • 典型的b2b平台有哪些网站关键词排名优化方法
  • wordpress分享插件积分重庆seo研究中心
  • linux做网站服务器吗如何自己建立一个网站
  • 新手用什么框架做网站比较好短视频营销
  • 西宁做网站的工作室关键词采集软件
  • 深圳科技网站建设营销策略有哪些
  • 做h的动漫在线观看网站网站统计数据分析
  • 网站 建设平台分析互联网营销策划是做什么的
  • 建站技术搜狗推广登录平台
  • web开发培训长春seo按天计费
  • 哪个网站可以兼职做效果图建设网站推广