Java5 自带动态代理接口InvocationHadler及创建代理类的Proxy类,我们可以实现该接口来完成动态代理的功能,例如现在我们可以设计一个动态代理例子:当UserDaoImpl在执行save() 方法之前进行保存日志等操作,保存结束执行其他的操作,通过代理来实现,动态代理可以实现:权限检查、做日志、检查效率、管理事务、处理异常等……,代码如下:
coding:
//IUserDao 接口 public interface IUserDao { public String save(); } //为UserDao的具体实现类 public class UserDaoImpl implements IUserDao { public String save() { System.out.println("save ************"); return "保存成功"; } } import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; //为UserDaoImpl的代理对象 public class UserDaoImplProxy implements InvocationHandler { // 代理的目标对象 private Object target; public UserDaoImplProxy(Object target) { super(); this.target = target; } public void before() { System.out.println("save start ***********"); } @Override public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { // 代理对象添加对应的业务处理逻辑 加日志、检查权限******* before(); // UserDaoImpl的save()方法开始执行 Object obj = m.invoke(target, args); // 方法执行结束 进行清空等操作 after(); return obj; } public void after() { System.out.println("save over ************"); } } import java.lang.reflect.Proxy; //测试客户端 public class Client { public static void main(String[] args) { // 被代理对象 IUserDao udao = new UserDaoImpl(); // 代理对象 IUserDao px = (IUserDao) Proxy.newProxyInstance(udao.getClass() .getClassLoader(), UserDaoImpl.class.getInterfaces(), new UserDaoImplProxy(udao)); String sx = px.save(); System.out.println(sx); } }
相关推荐
3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则...
JAVA,设计模式动态代理,学习笔记。
代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊
{1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...
设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...
Java Design Patterns 学习笔记 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
学习笔记较长,如果想查看文章的目录,chrome浏览器可以配合简悦插件使用,或者下载到本地使用Typora打开。 :hot_beverage: Java基础 Java容器 Java并发 数据结构和算法 数据结构 树 图 算法 分治 动态规划 回溯 ...
031505_【第15章:Java反射机制】_动态代理笔记.pdf 031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统内建Annotation笔记.pdf 031602_【第16章:Annotation】_自定义...
Ps:Java设计模式 [设计原则] [单一职责原则] [里氏替换原则] [依赖倒转原则] [接口隔离原则] [迪米特法则] [合成复用原则] 设计模式 创建型模式(5种) 结构型模式(7种) 关系型模式(11种) 适配器模式、装饰模式、代理...
describe:设计模式学习笔记 逻辑结构图 代码结构图 设计模式简述 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式,共七种:适配器模式,装饰器模式,代理模式,...
常用设计模式 单例模式 , 工厂模式 , 装饰者模式 , 代理模式 ... Java基础核心 JVM , 集合 , 类型 ,关键字... Java高级特性 多线程、锁、并发 框架 Spring , Mybatis , SpringBoot , SpringMVC ... 中间件 RPC , MQ...
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...
通过带着读者从java基础到java编写spring全家桶框架面试以及技术讲解,例如:集合,数组,JVM,引用类型,IO/NIO,多线程,类加载机制,spring设计原理等内容实现。 适合人群:具备一定编程基础,工作3-5年的研发...
java8 集合源码分析 Java 内存模型 并发/多线程 类加载 垃圾回收 Android UI 生命周期 ...ActivityManagerService ...设计模式 代理模式 装饰者模式 架构 MVVM 组件化 JavaScript Linux 版本控制 实战
详细介绍java的各项技术以及设计模式,包括动态代理,反射机制,网络编程,多线程等等,里面有详细的实践代码和说明,欢迎下载学习
第一部分:设计模式 & UML 简单工厂 工厂方法模式 抽象工厂模式 策略模式 责任链模式 命令模式 模板方法模式 适配器模式 代理模式 外观模式 组合模式 装饰模式 享元模式 桥接模式 Builder模式 状态模式 解释器模式 ...
Java面试 (速度加快) GitHub: : 编码云: : 作者介绍 作者介绍:笔者是19年本科毕业,现在在成都这边工作,是一名对技术有追求的开发者。...设计模式 现在只有单例,工厂,建造者,代理 Python
说明:文件夹以类型为目录,如并发、JVM、设计模式,文件名称尽量描述主题,如HASHMAP源码分析、代理模式分析 Books中存放分布式技术学习和书籍阅读后笔记、总结和一些面试搜集的问题,具体查看Books中ReadMe.md ...