package cn.dhcool.dynamic.proxy;
public interface CommonInterface {
public void speak();
}
package cn.dhcool.dynamic.proxy;
public class RealObject implements CommonInterface{
@Override
public void speak() {
System.out.println("你好");
}
}
package cn.dhcool.dynamic.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MyInvocationHandler implements InvocationHandler{
private CommonInterface realObject;
public MyInvocationHandler(){}
public MyInvocationHandler(CommonInterface realObject){
this.realObject = realObject;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Method[] methods = realObject.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
if(methods[i].getName().equals(method.getName())){
this.checkInfo();
methods[i].invoke(this.realObject, args);
break;
}
}
return null;
}
//代理模式调用的方法
public void checkInfo(){
System.out.println("运行方法前先调用的检查方法!");
}
}
package cn.dhcool.dynamic.proxy;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
CommonInterface realObject = new RealObject();
/*
* 代理模式需要的条件,一个公共的接口,一个真实实现的类,一个代理类同样实现了公共接口
* 现在我们有了接口和实现类,我们还需要一个代理类,我们的代理类可以通过JDK的Proxy类动态为我们创建
* 通过反射方式去调用
* InvocationHandler 一个接口处理类,接口回调方法,类似与SpringTemple 模版操作JDBC的接口回调
* 还有DBUtil的ResultSetHandler接口,都是一种接口回调的思想。
* */
//采用JDK动态代理类动态创建代理类
CommonInterface proxyObject = (CommonInterface)Proxy.newProxyInstance(realObject.getClass().getClassLoader(),
realObject.getClass().getInterfaces(), new MyInvocationHandler(realObject));
proxyObject.speak();
}
}
分享到:
相关推荐
基于java的jdk动态代理, 比较了静态代理与动态代理的区别,以及动态代理的底层实现,反编译class文件 jdk动态代理和cglib的区别
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
NULL 博文链接:https://fruitking.iteye.com/blog/601106
静态代理、jdk动态代理、cglib动态代理
* 动态代理(JDK代理、接口代理、拦截器模式) * 动态代理中的静态方法:java.lang.reflect.Proxy.newProxyInstance (ClassLoader(类加载器),interface(接口),handler(监听处理器)) * * 代码示例:《帮爸爸...
动态代理的代码例子 里面敲好了注释 搭配文章观看更好
代理模式的优点二、jdk动态代理实现原理1. jdk动态代理源码分析(通过该示例学会阅读源码的方法)2.jdk动态代理生成的代理类的源码3.总结三、手写实现jdk动态代理 一、代理模式 熟悉代理模式的可以直接点击目录第二章...
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类...
听了马老师的课,对动态代理设计模式,有了一点自己的认识,希望和大家分享。后面cglib还没有总结。
jdk动态代理与cglib动态度代理的区别原理代码jar包
java常用设计模式及JDK与CGLIB实现动态代理区别(源码) /** * 使用cglib动态代理 * @author * */ public class BookFacadeProxy implements MethodInterceptor{ private Object target; @Override public...
动力节点reyco郭 SSH视频和SSH前言视频+讲义+部分源码 SSM视频和SSM前言视频+讲义+所有源码 jdk动态代理视频,log4j视频 适配器设计模式视频和源码
代理模式详解-jdk与cglib动态代理与底层实现,spring中常用的设计模式,本案例是从源码到代理模式的实现。
AOP的意思就是面向切面编程。本文主要是通过梳理JDK中自带的反射机制,实现 AOP动态代理模式,这也是Spring AOP 的实现原理
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
Java各种代理模式以及AOP的实现代码 : 1.AspectJ - 静态代理 2. 动态代理 (1)JDK动态代理 (2)CGlib代理
文章目录一、代理模式定义二、代理模式的结构和说明三、代理模式的分类四、代理模式示例五、动态代理1、JDK动态代理JDK动态代理使用步骤JDK动态代理示例JDK动态代理实现原理JDK动态代理局限性2、CGLIB动态代理CGLIB...
在了解动态代理前,我们需要先了解一下什么是代理模式。 代理模式 代理模式(Proxy Pattern)是 23 种设计模式的一种,属于结构型模式。他指的是一个对象本身不做实际的操作,而是通过其他对象来得到自己想要的结果...