代理模式
来源:互联网 发布:ubuntu 卸载自带jdk 编辑:程序博客网 时间:2024/05/16 13:47
1、定义
给某一个对象提供一个代理,由代理对象来控制对原对象的访问。
2、java.lang.Proxy
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Dao { public void update(); public void insert();}class JdbcDao implements Dao { @Override public void update() { System.out.println("in jdbc update"); } @Override public void insert() { System.out.println("in jdbc insert"); }}class HibernateDao implements Dao { @Override public void update() { System.out.println("in hibernate update"); } @Override public void insert() { System.out.println("in hibernate insert"); }}class MyInvocationHandler implements InvocationHandler { Object obj; // 构造代理对象 public Object get(Object obj) { this.obj = obj; return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { System.out.println("before invoke..."); // invoke执行原对象的方法 Object result = arg1.invoke(obj, arg2); System.out.println("after invoke..."); return result; }}public class ProxyTest { public static void main(String[] args) { Dao dao = new JdbcDao(); MyInvocationHandler handler = new MyInvocationHandler(); // InvocationHandler类可生成代理对象 Dao daoProxy = (Dao) handler.get(dao); // 输出代理对象 System.out.println("dynamic proxy's name: " + daoProxy.getClass().getName()); // 执行代理对象的方法 daoProxy.insert(); daoProxy.update(); }}
输出:
dynamic proxy's name: test.$Proxy0before invoke...in jdbc insertafter invoke...before invoke...in jdbc updateafter invoke...
阅读全文
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- slf4j的包使用说明
- Android进阶封装之一个类实现兼容Android 6.0权限、适配Android7.0 拍照: 相机与相册上传图片就用我好啦!
- atoi()函数的实现
- SQLServer
- Lucene学习笔记(一)
- 代理模式
- django模型的用法
- 一天写多少行代码才算是好程序员?
- 如何用Xshell快速连接远程电脑
- android 7.0 适配
- 深度解析tomcat核心配置文件server.xml
- 调用支付宝接口原理
- dll类型的项目debug中没有lib文件
- 栈的反转