`
de6566088
  • 浏览: 32140 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

代理模式01

 
阅读更多

全是例子,注解用来讲解,给自己的一种学习的过程!

/*可运行代码*/

//注释,个人理解,但是由于个人程序龄不高所以理解的不到位的需要大神们指点!

内部代表可运行代码,代码都是从分离-->整合的一个过程,从具体-->抽象的过程

 

这个是个简单例子来实现代理模式

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;

public class ProxyTest {

 public static void main(String[] args) throws Exception{
 /*
  //分解式做法
  //生成的动态类 需要传入  对Collection类的加载器  与   类名称  就能对此类进行动态化
  Class clazzProxy = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class );
  //由于不能直接NEW出Collection对象  获取其构造方法Constructor[]
  Constructor constructor = clazzProxy.getConstructor(InvocationHandler.class);
  //内部类
  class MyInvocationHandler1 implements InvocationHandler{
   public Object invoke(Object obj, Method method, Object[] aobj)
     throws Throwable {
    return null;
   }
  }
  //动态代理的编码程序写入MyInvocationHandler中
  Collection proxy = (Collection) constructor.newInstance(new MyInvocationHandler1());
   */ 
  //                                                   类加载器   类的字节码   handler代理类
//  Collection proxy3 = (Collection) Proxy.newProxyInstance(arg0, arg1, arg2)
//  最后造就了getProxy方法
  
//此处打开注释即可运行测试效果
//      可用
/*  Collection proxy = (Collection) Proxy.newProxyInstance(Collection.class.getClassLoader(),
    new Class[]{Collection.class},
    new InvocationHandler() {
     public Object invoke(Object obj, Method method, Object[] aobj)
       throws Throwable {
      ArrayList target = new ArrayList();
      System.out.println(method.getName()+" begin");
      Object retVal = method.invoke(target, aobj);
      System.out.println(method.getName()+" End");
      return retVal;
     }
    }
  );
  proxy.add("a");*/
  
 }
 

 //以下方法是由上面的抽象出来的
 //建议传入的对象Advice(系统应用到的接口规范)   目标                     系统功能
 private static Object getProxy(final Object target,final Advice advice) {
  //创建一个新的代理
  Object proxy = Proxy.newProxyInstance(target.getClass()
    .getClassLoader(), target.getClass().getInterfaces(),
    //InvocationHandler动态方法
    new InvocationHandler() {
     Object retVal = null;
     //
     public Object invoke(Object obj, Method method,
       Object[] objs) throws Throwable {
      advice.beforeMethod(method);
      retVal = method.invoke(target, objs);
      advice.afterMethod(method);
      System.out.println(advice.CMethod());
      return retVal;
     }
    });
  return proxy;
 }
 
}

分享到:
评论

相关推荐

    01.装饰者设计模式和动态代理设计模式.wmv

    01.装饰者设计模式和动态代理设计模式.wmv

    01.Java设计模式之 单例模式.pdf

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    设计模式的代理模式

    23种设计模式中比较金典的一种代理模式,该代码是我自己写的一个demo列子希望对大家有用

    《Java设计模式》电子课件01至21章(程细柱PDF)

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单...代理模式、职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者...

    設計模式電子書01

    结构型模式则关注如何组合类和对象以形成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy);行为型模式则涉及对象间的通信和责任分配,如观察者模式(Observer)、策略模式...

    设计模式PPT.rar

    12第十二讲代理模式 13第十三讲外观模式 14第十四讲组合模式 15第十五讲桥接模式 16第十六讲适配器模式 17第十七讲解释器模式 18第十八讲中介者模式 19第十九讲职责链模式 20第二十讲迭代模式 21第二十一讲模板方法...

    01-制造工具的工厂模式(1).html

    代理模式( Proxy ) 外观模式( Facade ) 桥接模式( Bridge ) 组合模式( Composite ) 享元模式( Flyweight ) 行为型模式包含了: 策略模式( Strategy ) 模板方法模式( Template Method ) 观察者模式( ...

    Java与模式.part01-03.rar

    这包括创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如适配器、装饰器、代理、桥接、组合、外观、享元)和行为型模式(如策略、模板方法、观察者、迭代器、访问者、责任链、命令、解释器)。 Part01可能...

    23种java设计模式.pdf

    结构模式是指在对象之间的关系和结构上使用的模式,包括 Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade(外观模式)...

    java的23种设计模式01

    5. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。在Java中,可以使用动态代理或者静态代理实现。 6. 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中...

    01 设计模式1

    例如,工厂模式用于创建对象,代理模式用于控制访问权限,观察者模式用于事件驱动,策略模式则用于实现灵活的策略选择。熟悉这些设计模式能够帮助开发者更好地理解和使用这些框架,从而提升开发效率。 设计原则是...

    设计模式课程每章ppt(共27章).zip

    ├── 第16章_代理模式.ppt ├── 第17章_职责链模式.ppt ├── 第18章_命令模式.ppt ├── 第19章_解释器模式.ppt ├── 第20章_迭代器模式.ppt ├── 第21章_中介者模式.ppt ├── 第22章_备忘录模式.ppt ...

    軟件設計模式(中文版01)

    在后续的章节中,教程可能会逐步介绍更多设计模式,包括但不限于代理模式(Proxy)、命令模式(Command)、模板方法模式(Template Method)等。每个模式都会讲解其应用场景、优缺点以及如何在实际编程语言中实现。 ...

    吉林大学软件设计模式课件以及作业答案.zip

    7. **SDP03-06例子代码.rar** - 可能包含代理模式,代理模式为其他对象提供一种代理以控制对这个对象的访问。它可以用来在访问原对象前增加一些额外的操作,或者用于远程代理、虚拟代理等场景。 8. **SDP03-04例子...

    吉林大学软件设计模式SDP03-01例子代码

    6. **代理模式(Proxy)**:代理模式为其他对象提供一种代理以控制对这个对象的访问。在这个压缩包中,可能会有一个Proxy类,它代表了RealSubject,并在访问RealSubject之前或之后执行额外操作。 7. **命令模式...

    21-Proxy_01-第十二模式.mp4

    Java设计模式精讲-代理模式

    25种设计模式(源码)(面向对象软件)

    3. **代理模式**:`07代理模式`讲解了如何创建一个代理对象来控制对原对象的访问。代理可以增加额外的功能,如监控、缓存、安全控制等,同时保持与原始对象相同的接口。 4. **观察者模式**:这个模式定义了一种一对...

    第03章 从架构层面看设计模式01.pdf

    例如,在Spring框架中,观察者模式被用来实现事件监听机制,代理模式用于实现面向切面编程(AOP),模板模式定义了算法的骨架,适配器模式则允许不同接口的类协同工作。 总之,设计模式是软件开发中的经典知识,是...

    jdbc proxy 代理类

    JDBC代理主要涉及两个技术领域:AOP(面向切面编程)和设计模式中的代理模式。 【描述】:“代码对应的blog:http://blog.csdn.net/keyboardsun/archive/2008/01/30/2072865.aspx” 这个博客文章详细介绍了如何...

    [源代码] 《易学 设计模式》 随书源代码

    第11章 越俎代庖:代理模式 (Proxy) 第12章 真人不露相:装饰模式 (Decorator) 第13章 游刃有余:桥模式 (Bridge) 第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:享元模式 (Flyweight) 第16章 按部就班:...

Global site tag (gtag.js) - Google Analytics