java代理模式——动态代理
来源:互联网 发布:mac mini dp接口 编辑:程序博客网 时间:2024/05/01 20:19
首先要了解与代理模式相关的三个对象:
抽象角色、真实角色、和代理角色。
动态代理首先也要有一个抽象角色
抽象角色、真实角色、和代理角色。
动态代理首先也要有一个抽象角色
- //注:抽象角色:java动态代理的实现目前只支持接口,不支持抽象类
-
interface BusinessFoo -
{ -
void foo(); -
} -
interface BusinessBar - {
-
String bar(String message); - }
- //真实角色:真正实现业务逻辑方法
- class
BusinessFooImpl implementsBusinessFoo - {
-
public void foo() -
{ -
System.out.println("BusinessFooImpl.foo()"); -
} - }
- class
BusinessBarImpl implementsBusinessBar - {
-
public String bar(String message) -
{ -
System.out.println("BusinessBarImpl.bar()"); -
return message; -
} - }
- //动态角色:动态生成代理类
- class
BusinessImplProxy implementsInvocationHandler - {
-
private Object obj; -
BusinessImplProxy() { -
} -
BusinessImplProxy(Object obj) { -
this.obj = obj; -
} -
public Object throwsinvoke(Object proxy,Method method,Object[] args) Throwable -
{ -
Object result = null; -
doBefore(); -
result = method.invoke(obj,args); -
doAfter(); -
return result; -
} -
public void doBefore(){ -
System.out.println("do something );before Business Logic" -
} -
public void doAfter(){ -
System.out.println("do something );after Business Logic" -
} -
public static Object factory(Object obj) -
{ -
Class cls = obj.getClass(); -
return Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(), newBusinessImplProxy(obj)); -
} - }
- //测试类
- public
class DynamicProxy - {
-
public static void main(String[] throwsargs) Throwable -
{ -
BusinessFooImpl bfoo = new BusinessFooImpl(); -
BusinessFoo bf = (BusinessFoo)BusinessImplProxy.factory(bfoo); -
bf.foo(); -
System.out.println(); -
-
BusinessBarImpl bbar = new BusinessBarImpl(); -
BusinessBar bb = (BusinessBar)BusinessImplProxy.factory(bbar); -
String message = bb.bar("Hello,World"); -
System.out.println(message); -
} - }
0 0
- java代理模式——动态代理
- 代理模式(静态代理+动态代理)——JAVA
- 代理模式—动态代理
- java设计模式—动态代理模式
- 代理模式——静态代理、动态代理、cglib代理
- Java设计模式之—静态代理和动态代理
- java代理模式--动态代理
- 代理模式&java动态代理
- JAVA代理模式--动态代理
- JAVA动态代理 代理模式
- java代理模式-动态代理
- Java代理模式 静态代理 动态代理
- 设计模式——Java动态代理
- Java设计模式——代理模式(静态代理vs动态代理)
- 代理模式——动态代理
- 代理模式——动态代理
- 代理模式——动态代理
- 代理模式——动态代理
- .NET使用DFS分布式文件存储系统
- java bean 中equal的常用写法
- 第一行代码笔记 基础 HttpURLConnection 网络请求
- java中的一些排序
- 数据比对与mysql ON DUPLICATE KEY UPDATE操作
- java代理模式——动态代理
- 数字图像处理线性系统、卷积、傅立叶变换
- 关系型数据库和非关系型数据库的区…
- JVM原理
- NIO与IO的区别
- Centos 6,7 YUM本地源和网络源配置
- Java面试题和基础总结(持续更新中…
- Java设计模式————策略模式(Strate…
- C++第4次实验(基础班)—循环结构程序设计