博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代理模式-JDK Proxy(Java实现)
阅读量:5321 次
发布时间:2019-06-14

本文共 1538 字,大约阅读时间需要 5 分钟。

代理模式-JDK Proxy

使用JDK支持的代理模式, 动态代理

场景如下: 本文例子代理了ArrayList, 在ArrayList每次操作时, 在操作之前和之后都进行一些额外的操作.

ArrayListProxy类

这里是代理的实现.

import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class ArrayListProxy implements InvocationHandler {    private Object proxy;    public ArrayListProxy(Object obj) {        this.proxy = obj;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Exception {        System.out.println("before calling " + method);        if (args != null) {            for (Object arg : args) {                System.out.println(arg);            }        }        Object o = method.invoke(this.proxy, args);        System.out.println("after calling " + method);        return o;    }}

MyUtils类

封装了Proxy.newProxyInstance()方法, 方便取得代理对象.

import java.lang.reflect.Proxy;public class MyUtils {    public static Object getProxy(Object obj) {        Class cls = obj.getClass();        return Proxy.newProxyInstance(                cls.getClassLoader(),                cls.getInterfaces(),                new ArrayListProxy(obj)        );    }}  

Main

在这里进行运行测试

import java.util.ArrayList;import java.util.List;@SuppressWarnings("unchecked")public class Main {    public static void main(String[] args) {        List realList = new ArrayList
(10); List proxyList = (List) MyUtils.getProxy(realList); proxyList.add("New"); System.out.print("\n\n"); proxyList.add("York"); }}

  

转载于:https://www.cnblogs.com/noKing/p/9063811.html

你可能感兴趣的文章
camera 摄像机
查看>>
wtforms
查看>>
加载静态文件,父模板的继承和扩展
查看>>
struts2 日期类型问题
查看>>
javascript数据缓存策略之本地存储
查看>>
HTML5 API详解(1):fullscreen全屏模式
查看>>
AngularJs自定义指令详解(5) - link
查看>>
从“埋点技术已死?”开始说起
查看>>
[配置Cordova环境] [Alfred使用手册]
查看>>
EFCode First 导航属性
查看>>
嵌入式Linux开发
查看>>
Swift语法初见
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
前端基础之html
查看>>
I - Agri-Net - poj 1258
查看>>
git 的回退
查看>>
C语言编程题002
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
Confluence配置数据库
查看>>
Java锁机制(一)synchronized
查看>>