`
starbhhc
  • 浏览: 649498 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式之 动态代理

阅读更多
import java.lang.reflect.InvocationHandler;   
  
import java.lang.reflect.Method;   
  
import java.lang.reflect.Proxy;   
  
    
  
    
  
public class SecurityHandler implements InvocationHandler {   
  
    
  
  private Object targetObject;   
  
    
  
  /*targetObjet 为要实例的JAVA类, 在这里指的就是 UserManagerImpl  
 
  调用代码写法:     
 
      SecurityHandler handler = new SecurityHandler();  
 
     UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl());  
 
     userManager.deleteUser(1);     
 
     
 
    在调用的时候,userManager 已经是个代理的类,调用里面的deletUser()方法时,他就会去调用invoke()方法  
 
  */  
  
     
  
public Object newProxy(Object targetObject) {   
  
  this.targetObject = targetObject;   
  
  return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),    
  
           targetObject.getClass().getInterfaces(),    
  
           this);   
  
}   
  
    
  
    
  
public Object invoke(Object proxy, Method method, Object[] args)   
  
   throws Throwable {   
  
        
  
  checkSecurity();                  //  关注点的具体实现  里面可以书写任何的检验代码   
  
    
  
  Object ret = null;   
  
  try {   
  
   ret = method.invoke(this.targetObject, args);      
  
  }catch(Exception e) {   
  
   e.printStackTrace();   
  
   throw new java.lang.RuntimeException(e);   
  
  }   
  
  return ret;   
  
}   
  
    
  
    
  
private void checkSecurity() {   
  
   //相应个性化的代码   
  
  System.out.println("----------checkSecurity()---------------");   
  
}   
  
    
  
}   
  
分享到:
评论

相关推荐

    设计模式之动态代理

    动态代理在IT行业中是设计模式的一种,主要用于在不修改原有对象代码的基础上,为对象增加额外的功能或行为。这种模式在很多场景下都有应用,比如日志记录、事务管理、性能监控等。动态代理的设计思想是将目标对象与...

    设计模式之动态代理与spring的aop编程

    动态代理和Spring AOP(面向切面编程)是两个关键的设计概念,它们在实现高效、模块化的系统中起着至关重要的作用。本文将深入探讨这两个概念,并结合实际应用进行解析。 首先,让我们理解什么是动态代理。动态代理...

    动态代理设计模式 日志和源码

    动态代理设计模式是一种在运行时创建代理对象的技术,它允许我们为现有的对象提供额外的功能,如日志记录、性能监控、事务管理等,而无需修改原对象的代码。这种模式在Java和许多其他编程语言中都有应用,尤其在...

    Java设计模式——代理设计模式(静态代理和动态代理)

    代理设计模式分为静态代理和动态代理两种类型。 ### 静态代理 静态代理是在编译时就已经确定了代理关系,代理类和真实类的关系是硬编码在代理类中的。下面我们将详细介绍静态代理的实现方式: 1. **定义接口**:...

    动态代理设计模式

    详细而又简单的讲述了java动态代理设计模式

    代理模式之动态代理

    代理模式是一种设计模式,它允许在不修改原有对象的情况下,为对象添加新的功能或行为。在Java编程中,代理模式有静态代理和动态代理两种实现方式。本文将主要探讨动态代理,这是一种更灵活且适用于多种场景的技术。...

    动态代理设计模式-源码

    动态代理设计模式是一种在运行时创建对象代理的技术,它允许我们为现有的对象提供额外的功能,而无需修改原对象的代码。这种模式的核心是接口和代理类,通过接口,代理类可以与原对象进行通信,同时在代理类中添加...

    动态代理设计模式详解.pdf

    动态代理设计模式是一种编程技术,它允许在运行时创建具有相同接口的新对象,该对象能够对原对象的行为进行增强或扩展。在这个模式中,代理对象作为客户端与目标对象之间的中介,代理可以添加额外的功能,如日志记录...

    java静态代理、动态代理、装饰设计模式

    在Java编程中,代理模式是一种常见的设计模式,它允许我们为一个对象提供一个代理以控制对这个对象的访问。代理模式通常用于增加额外的功能或在访问原对象时进行额外的操作,比如日志记录、安全控制、性能统计等。...

    优秀的设计模式示例-动态代理模式

    动态代理模式是一种在运行时创建代理对象以控制或扩展原有对象行为的设计模式。它允许我们为现有的对象提供一种代理以增强其功能,而无需修改原对象的代码。动态代理模式通常用于实现对目标对象的额外操作,如日志...

    java设计模式(工厂模式,动态代理,责任链模式……)实例源码

    这个压缩包中包含的实例源码涵盖了多种设计模式,包括工厂模式、动态代理和责任链模式。让我们深入探讨这些设计模式的核心概念、用途以及它们在实际编程中的应用。 1. 工厂模式:这是最基础的设计模式之一,属于...

    设计模式之代理模式demo

    代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用。代理模式的主要目的是为其他对象提供一种代理以控制对这个对象的访问。通过引入代理,我们可以增加新的功能,如缓存、日志记录、访问控制等...

    设计模式之_代理模式

    **代理模式**是一种常用的设计模式,它在软件开发中扮演着重要的角色,特别是在对象的访问控制、性能优化、安全策略等方面。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码)

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码) /** * 使用cglib动态代理 * @author * */ public class BookFacadeProxy implements MethodInterceptor{ private Object target; @Override public...

    设计模式之代理模式

    **设计模式之代理模式** 代理模式是软件设计模式中的一种结构型模式,它在对象交互过程中引入一个代理,代理对象负责控制对原对象的访问。这种模式的主要目的是为了解耦,提供一种替代真实对象的方式,使得客户端...

    java模式设计-代理模式之动态代理.ppt

    代理模式是一种设计模式,它允许我们在不修改原有对象的情况下,为现有对象添加额外的功能或控制。在Java中,动态代理是代理模式的一种实现方式,它允许我们在运行时创建代理对象,这种方式比静态代理更加灵活。动态...

    .net实现设计模式之代理模式

    代理模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在.NET框架下。代理模式的核心思想是为一个对象提供一个替代品或代表,这个替代品能够控制对原对象的访问,使得客户端代码可以通过代理对象与...

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    Java设计模式是软件开发中的重要概念,它提供了一套通用的解决方案模板,使得代码更加可复用、可扩展。在这些模式中,代理模式(Proxy Pattern)是...对于Java开发者来说,掌握设计模式是提升专业技能的关键步骤之一。

    JAVA设计模式之代理模式实例

    代理模式是设计模式的一种,它提供了一种对目标对象进行增强或者控制访问的方式。在本实例中,我们将深入探讨Java中的代理模式及其应用。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和...

Global site tag (gtag.js) - Google Analytics