- 浏览: 137851 次
文章分类
- 全部博客 (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 551使用共享对象可有效地支持大量的细粒度的对象。要求细粒度的对象 ... -
设计模式-桥接模式
2014-06-19 17:12 328将抽象和实现解耦,使得两者可以独立地变化。 桥接模式使用了 ... -
设计模式-状态模式
2014-06-16 10:37 410状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像 ... -
java 迭代器
2014-06-11 18:04 632public class ReversibleArrayL ... -
设计模式-内部类工厂模式
2014-06-10 23:33 533public interface Service { ... -
设计模式-迭代器模式
2014-06-10 14:37 457迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又 ... -
设计模式-模板方法
2014-06-05 13:00 359public abstract class Caffein ... -
设计模式-适配器模式
2014-06-03 22:14 429适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让 ... -
设计模式-命令模式
2014-06-02 23:24 373public interface Command { ... -
设计模式-工厂方法
2014-06-01 18:04 488public abstract class PizzaSt ... -
设计模式-观察者模式
2014-06-01 11:03 4751. 利用Java 内置的类和接口实现观察者模式 publ ... -
设计模式-策略模式
2013-12-16 12:50 481Define a family of algorithms ... -
设计模式-装饰模式
2013-12-16 12:49 457Attach additional responibili ... -
设计模式-责任链模式
2013-12-11 18:00 542Avoid coupling the sender of ... -
设计模式-命令模式
2013-12-08 15:11 439命令模式是一个高内聚的模式。 Encapsulate ... -
设计模式-中介者模式
2013-12-08 12:29 400在多个对象依赖的情况下,通过加入终结者角色,取消了多个对象 ... -
设计模式-建造者模式(生成器模式)
2013-11-20 11:35 531ArrayList 或者 HashMap 如果定义为类的成员 ... -
设计模式-模板方法模式
2013-11-20 10:45 447Define the skeleton of an algor ... -
设计模式-抽象工厂模式
2013-11-18 15:49 428Provide an interface for creati ... -
设计模式-工厂方法模式
2013-11-18 08:59 621Define an interface for creatin ...
相关推荐
代理模式是一种常用的设计模式,它在软件开发中扮演着重要角色,允许我们通过一个代理类来控制对原对象的访问。在《设计模式:可复用面向对象软件的基础》(通常称为GoF设计模式)中,代理模式被定义为“为其他对象...
在这个“Java设计模式-代理模式例子”中,我们可能能看到如何创建静态代理类,以及如何利用`Proxy`和`InvocationHandler`创建动态代理。源码分析可以帮助我们更好地理解代理模式的实现细节,并能将其运用到自己的...
JAVA-设计模式-结构型模式-代理模式
总结来说,代理模式是iOS开发中不可或缺的设计模式,它帮助我们构建松耦合的系统,提供了扩展性和灵活性。通过定义和遵循协议,代理对象可以控制和增强对目标对象的访问,实现各种复杂功能,如数据传递、事件响应和...
设计模式-代理模式(讲解及其实现代码)
代理模式在Java中有两种常见的实现方式:静态代理和动态代理。静态代理是通过程序员显式创建代理类来实现的,而动态代理则利用Java的反射API在运行时动态创建代理对象。 1. **静态代理**:在静态代理中,我们需要为...
Java 设计模式 - 代理模式 代理模式(Proxy Pattern)是一种常用的设计模式,提供了间接访问目标对象的一种方式,即通过代理对象访问...代理模式是一种非常有用的设计模式,可以帮助我们更好地管理和扩展目标对象。
通过学习《C++设计模式--基于Qt4开源跨平台开发框架》,开发者不仅可以掌握设计模式的本质和应用场景,还能深入理解Qt4框架的强大功能。结合两者,能够提高代码质量,降低维护成本,同时实现高效且可靠的跨平台应用...
动态代理设计模式是一种在运行时...总的来说,动态代理设计模式为我们提供了一种灵活的扩展和增强已有对象功能的方式,它在AOP(面向切面编程)中扮演着重要角色,广泛应用于日志记录、性能监控、事务管理等多个领域。
代理模式是一种在面向对象设计中广泛应用的结构型设计模式,它提供了一种对目标对象进行间接访问的...在C++开发中,无论是为了增强代码的可维护性还是提供更高级别的服务,代理模式都是一个值得学习和掌握的设计模式。
在Java中,代理模式可以通过多种方式实现,包括静态代理、动态代理(JDK动态代理和CGLIB动态代理)等。 **静态代理** 静态代理是最基础的代理形式,需要手动创建一个代理类,该类继承或实现与目标类相同的接口,并...
代理设计模式分为静态代理和动态代理两种类型。 ### 静态代理 静态代理是在编译时就已经确定了代理关系,代理类和真实类的关系是硬编码在代理类中的。下面我们将详细介绍静态代理的实现方式: 1. **定义接口**:...
- Java中的动态代理模式是一种特殊形式的代理,它是一种灵活和动态的方法,用于拦截和操作方法调用。通过使用动态代理,开发人员可以在不修改原始类代码的情况下实现额外的功能。这在需要增强现有功能的场景中特别...
代理模式是一种设计模式,它允许我们在不修改原有对象的情况下,为现有对象添加额外的功能或控制。在Java中,动态代理是代理模式的一种实现方式,它允许我们在运行时创建代理对象,这种方式比静态代理更加灵活。动态...
通过阅读《设计模式-Java语言中的应用》,读者不仅可以掌握设计模式的基本概念和原理,还能学习到如何在实际项目中选择合适的设计模式,以及如何优雅地在Java代码中实现这些模式。这将有助于提升开发者的编程技巧,...
动态代理模式是一种在运行时创建代理对象以控制或扩展原有对象行为的设计模式。它允许我们为现有的对象提供一种代理以增强其功能,而无需修改原对象的代码。动态代理模式通常用于实现对目标对象的额外操作,如日志...
动态代理设计模式是一种在运行时创建代理对象的技术,它允许我们为现有的对象提供额外的功能,如日志记录、性能监控、事务管理等,而无需修改原对象的代码。这种模式在Java和许多其他编程语言中都有应用,尤其在...
设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如代理、装饰器、适配器)和行为型模式(如观察者、策略、命令)。这些模式都是在特定上下文中解决设计问题的模板,它们可以提高代码的...
在Java中,代理模式有多种实现方式,包括静态代理、JDK动态代理和CGLIB动态代理。 **静态代理** 静态代理是最早也是最基础的代理实现方式。在静态代理中,我们需要创建一个代理类,这个代理类与原始类(被代理类)...
在这个“java设计模式视频教程-代理模式.rar”压缩包中,包含了一部关于代理模式的视频教程,以及相关的课件和示例代码。 代理模式的核心思想是通过代理类来代理原始对象,为原始对象提供一个替代品或占位符,以...