代理模式 & 动态代理
来源:互联网 发布:linux文件自启动脚本 编辑:程序博客网 时间:2024/04/29 07:12
代理模式(proxy Pattern)有三个角色:
抽象主题角色(Subject):是真实主题和代理主题的公共接口,以便在任何可以使用真实主题的地方都可以使用代理主题。
代理主题角色(proxy Subject):负责控制对真实主题的引用,负责在需要的时候创建或删除真实主题对象,并且在真实主题角色处理完毕前后做预处理和善后处理工作。
真实主题角色(Real Subject):委托角色,是业务逻辑的具体执行者。
Subject:
public interface Subject { public void request();}
RealSubject:
public class RealSubject implements Subject{ @Override public void request() { }}
ProxySubject:
public class ProxySubject implements Subject{ private Subject subject; public ProxySubject(Subject subject) { this.subject = subject; } @Override public void request() { this.beforeRequest(); subject.request(); this.afterRequest(); } private void beforeRequest() { } private void afterRequest() { }}
我们发现代理模式和装饰者模式很类似,两者区别不大,但是在意义上不同:
- 代理模式是实现一些与目标对象功能关联不太紧密的职责;而装饰者是处理同一问题域名。
- 装饰者是为了为目标对象添加功能活着减少功能。
java中的动态代理:
java1.3版本以后,引入了动态代理,使用起来非常简单快捷。
public class DaoProxy <T extends Dao> implements InvocationHandler { private T t; @SuppressWarnings("unchecked") public T bind(T t ) { this.t = t; return (T) Proxy.newProxyInstance( t.getClass().getClassLoader(), t.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object rst = null; before(); rst = method.invoke(t, args); after(); return rst; } private void before() { System.out.println("before ..."); } private void after() { System.out.println("after"); }}
DemoClient:
public static void main(String[] args) { DaoProxy<UserDao> userDaoProxy = new DaoProxy<UserDao>(); UserDao xx = userDaoProxy.bind(new UserDaoImpl()); xx.insert(); }
0 0
- 代理模式--动态代理
- 代理模式 & 动态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式之动态代理
- java代理模式--动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式和动态代理
- 代理模式与动态代理
- 为什么我不想去创业
- 黑马程序员----7K面试题银行业务调度系统
- 数组
- 塔防游戏(二) 埋雷(防止游戏数据被更改)
- linux内核链表分析与实践
- 代理模式 & 动态代理
- Googlebuf Window编译
- 交互体验趋势
- HDOJ 题目4832 Chess(DP,组合数学)
- 第三章第四十四题
- Android 自定义view时,顶层view为ScrollView 注意
- 数据结构面试题总结2——数组:求出现次数超过一半的元素
- 浅谈iOS面向对象之类与对象
- 第三章 第三十九题