- 浏览: 132007 次
文章分类
- 全部博客 (149)
- Java (41)
- 设计模式 (23)
- php (2)
- C++ (2)
- Linux (6)
- C (1)
- JavaEE (27)
- javascript (2)
- uplodify (1)
- Mybatis (2)
- Maven (4)
- Lucene (3)
- commons (1)
- Spring (7)
- SQL (3)
- mahout (1)
- MySQL (2)
- extjs4.2.1 (2)
- ubuntu (1)
- hadoop (1)
- hibernate (1)
- Spring JPA (2)
- JPA 2.0 (1)
- express (1)
- redis (2)
- angularjs (1)
- git (1)
- Python (1)
- logging (2)
最新评论
-
xlaohe1:
controller返回的是一个POJO对象,然后用@Resp ...
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
TRAMP_ZZY:
能帮到你,我也很高兴。
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
jobzjc:
第一段有帮到我。如果是非对象,Object方式传递的时候,第一 ...
Spring MVC 4.X ResponseBody 日期类型Json 处理 -
TRAMP_ZZY:
dingran 写道为什么,我怎么就没找到System > ...
Ubuntu 12.04 设置 IBus 开机启动 -
dingran:
为什么,我怎么就没找到System >> Pref ...
Ubuntu 12.04 设置 IBus 开机启动
1.简单代理模式
2. 动态代理模式。动态代理可以将所有调用重定向到调用处理器。因此,通常会向调用处理器的构造器传递一个实际的对象引用。
interface Interface { void doSomething(); void somethingElse(String arg); } class RealObject implements Interface { @Override public void doSomething() { System.out.println("doSomething"); } @Override public void somethingElse(String arg) { System.out.println("somethingElse " + arg); } } class SimpleProxy implements Interface { private Interface proxied; public SimpleProxy(Interface proxied) { this.proxied = proxied; } @Override public void doSomething() { System.out.println("SimpleProxy doSomething"); this.proxied.doSomething(); } @Override public void somethingElse(String arg) { System.out.println("SimpleProxy somethingElse " + arg); this.proxied.somethingElse(arg); } } public class SimpleProxyDemo { public static void consume(Interface iface) { iface.doSomething(); iface.somethingElse("bonobo"); } public static void main(String[] args) { consume(new RealObject()); consume(new SimpleProxy(new RealObject())); } }
2. 动态代理模式。动态代理可以将所有调用重定向到调用处理器。因此,通常会向调用处理器的构造器传递一个实际的对象引用。
class DynamicProxyHanler implements InvocationHandler { private Object proxied; public DynamicProxyHanler(Object object) { this.proxied = object; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("***** proxy : " + proxy.getClass() + ".method:" + method + ",args: " + args); if (args != null) { for (Object arg : args) { System.out.println(" " + arg); } } return method.invoke(proxied, args); } } public class SimpleDynamicProxy { public static void consumer(Interface iface) { iface.doSomething(); iface.somethingElse("zhangzhaoyu"); } public static void main(String[] args) { RealObject real = new RealObject(); consumer(real); Interface proxy = (Interface)Proxy.newProxyInstance( Interface.class.getClassLoader(), new Class[]{Interface.class}, new DynamicProxyHanler(real)); consumer(proxy); } }
class MethodSelector implements InvocationHandler { private Object proxied; public MethodSelector(Object proxied) { this.proxied = proxied; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getName().equals("interesting")) { System.out.println("Proxy detected the interesting method"); } return method.invoke(proxied, args); } } interface SomeMethods { void boring1(); void boring2(); void interesting(String arg); void boring3(); } class Implentation implements SomeMethods { @Override public void boring1() { System.out.println("boring1"); } @Override public void boring2() { System.out.println("boring2"); } @Override public void interesting(String arg) { System.out.println("interesting : " + arg); } @Override public void boring3() { System.out.println("boring3"); } } public class SelectingMethods { public static void main(String[] args) { SomeMethods proxy = (SomeMethods) Proxy.newProxyInstance(SomeMethods.class.getClassLoader(), new Class[]{SomeMethods.class}, new MethodSelector(new Implentation())); proxy.boring1(); proxy.boring2(); proxy.interesting("zhang"); proxy.boring3(); } }
发表评论
-
设计模式-享元模式(Flyweight)
2014-06-20 13:11 500使用共享对象可有效地支持大量的细粒度的对象。要求细粒度的对象 ... -
设计模式-桥接模式
2014-06-19 17:12 259将抽象和实现解耦,使得两者可以独立地变化。 桥接模式使用了 ... -
设计模式-状态模式
2014-06-16 10:37 370状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像 ... -
java 迭代器
2014-06-11 18:04 606public class ReversibleArrayL ... -
设计模式-内部类工厂模式
2014-06-10 23:33 499public interface Service { ... -
设计模式-迭代器模式
2014-06-10 14:37 426迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又 ... -
设计模式-模板方法
2014-06-05 13:00 322public abstract class Caffein ... -
设计模式-适配器模式
2014-06-03 22:14 400适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让 ... -
设计模式-命令模式
2014-06-02 23:24 326public interface Command { ... -
设计模式-工厂方法
2014-06-01 18:04 454public abstract class PizzaSt ... -
设计模式-观察者模式
2014-06-01 11:03 4351. 利用Java 内置的类和接口实现观察者模式 publ ... -
设计模式-策略模式
2013-12-16 12:50 445Define a family of algorithms ... -
设计模式-装饰模式
2013-12-16 12:49 415Attach additional responibili ... -
设计模式-责任链模式
2013-12-11 18:00 499Avoid coupling the sender of ... -
设计模式-命令模式
2013-12-08 15:11 399命令模式是一个高内聚的模式。 Encapsulate ... -
设计模式-中介者模式
2013-12-08 12:29 366在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象 ... -
设计模式-建造者模式(生成器模式)
2013-11-20 11:35 494ArrayList 或者 HashMap 如果定义为类的成员 ... -
设计模式-模板方法模式
2013-11-20 10:45 416Define the skeleton of an algor ... -
设计模式-抽象工厂模式
2013-11-18 15:49 394Provide an interface for creati ... -
设计模式-工厂方法模式
2013-11-18 08:59 572Define an interface for creatin ...
相关推荐
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
动态代理设计模式-源码
JAVA-设计模式-结构型模式-代理模式
c++设计模式-结构型模式-代理模式,qt工程,c++源码,简单示例
设计模式-代理模式(讲解及其实现代码)
java常用设计模式-代理模式
java模式设计-代理模式之动态代理.ppt
ios平台下的代理模式设计实现,最简单的实现,重写了方法签名,信息派发,blog:http://blog.sina.com.cn/s/blog_161d504630102wwvp.html
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
Java设计模式,代理模式,包含动态代理的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
Java 设计模式 代理模式介绍,含源码
动态代理设计模式 日志和源码 动态代理设计模式 日志和源码
设计模式专题之(六)代理模式---设计模式代理模式示例代码(python--c++)
自己写的Java的代理模式的实现,有兴趣的可以下载看看
自己编写的设计模式示例,绝对不含伪代码,示例简单易懂 适合初学者学习使用
java设计模式视频教程-代理模式, 深层了解java的设计模式
java 模式 设计 代理模式 ,动态代理跟反射机制的内容相关
设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略...
动态代理设计模式详解.pdf动态代理设计模式详解.pdf动态代理设计模式详解.pdf动态代理设计模式详解.pdf动态代理设计模式详解.pdf动态代理设计模式详解.pdf
详细而又简单的讲述了java动态代理设计模式