`

动态代理(一个小程序)

阅读更多

动态代理类(以下简称为代理类)是一个实现在创建类时在运行时指定的接口列表的类,该类具有下面描述的行为。 代理接口 是代理类实现的一个接口。代理实例 是代理类的一个实例。 每个代理实例都有一个关联的调用处理程序 对象,它可以实现接口 InvocationHandler。通过其中一个代理接口的代理实例上的方法调用将被指派到实例的调用处理程序的 Invoke 方法,并传递代理实例、识别调用方法的 java.lang.reflect.Method 对象以及包含参数的 Object 类型的数组。调用处理程序以适当的方式处理编码的方法调用,并且它返回的结果将作为代理实例上方法调用的结果返回。 

UserManager
public interface UserManager { 
public void addUser(String userId, String userName);
public void delUser(String userId);
public void modifyUser(String userId, String userName);
public String findUser(String userId); 
} 



UserManagerImpl
public class UserManagerImpl implements UserManager {  
   public void addUser(String userId, String userName) {    
 try{ 
     System.out.println("UserManagerImpl-->>addUser  userId="+userId);     }catch(Exception e){        
    throw new RuntimeException();  
   }  
   }     
     public void delUser(String userId) {       
   System.out.println("UserManagerImpl-->>delUser  userId="+userId);     }     
     public String findUser(String userId) {                        System.out.println("UserManagerImpl-->>findUser  userId="+userId);       
   return "张三";    
 }     
    public void modifyUser(String userId, String userName) {       System.out.println("UserManagerImpl-->>modifyUser  userId="+userId); }     } 


LogHandlerimport
java.lang.reflect.InvocationHandler; 
import java.lang.reflect.Method; 
import java.lang.reflect.Proxy;
public class LogHandler implements InvocationHandler {   
  private Object targetObject;    
    public Object newProxyInstance(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 {      
     System.out.println("start-->"+ method.getName());         for(int i=0; i>" + method.getName());   
     }catch(Exception e){      
       e.printStackTrace();   
     System.out.println("error-->>" + method.getName());    
     }     return ret;     }     } 

Clientpublic class Client {
/** * @param args */public static void main(String[] args) {            LogHandler logHandler = new LogHandler();   
         UserManager userManager = (UserManager)logHandler.newProxyInstance(new UserManagerImpl());    
 //userManager.addUser("0001", "张三");  
         String name = userManager.findUser("0001");                  System.out.println("name==" + name);   
  }     }  

分享到:
评论

相关推荐

    自己写的动态代理的小程序 运行一下 动态代理很快理解

    这个小程序旨在帮助我们快速理解动态代理的概念和工作原理。在这个名为"Proxy3"的压缩包中,很可能包含了一个简单的Java程序示例,用于演示动态接口的实现。 在Java中,动态代理主要有两种实现方式:一是使用`java....

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)

    但是,静态代理也存在一些缺点,如需要代理多个类时,需要编写多个代理类,每个目标对象对应一个代理类,或者维护一个庞大的代理类,实现多个接口。 三、 JDK 动态代理 JDK 动态代理是 Java 中的一种动态代理方式...

    一个微信小程序替代原生Component的数据层代理构造器

    在这个微信小程序的代理构造器中,Proxy被用来创建一个数据层代理,使得开发者可以直接通过注册的方法和生命周期钩子来操作成员变量,而无需手动调用微信小程序的 setData 函数来更新视图。 首先,这个代理构造器...

    即时小程序代理商合作政策.docx

    例如,省级代理商直接推荐一个代理商以20万元买断成为市级代理商(一级),则省级代理商可获得10万元的直推收益,相当于2000个小程序(省级代理小程序成本为50元/个)。 综上所述,即时小程序的代理商合作政策不仅...

    简单代码实现虚拟和动态代理

    例如,当需要加载一个大图片时,我们可以先用一个小的占位符(如loading图)作为虚拟代理,等到真正需要时再加载实际的图片。这样可以提高程序的响应速度和用户体验。虚拟代理的实现通常涉及懒加载(lazy loading)...

    Spring AOP的静态代理和动态代理,转移到调用处理器一个集中的方法中处理.docx

    - **JDK动态代理**:基于接口的代理,要求被代理的类必须实现至少一个接口。动态代理通过实现`java.lang.reflect.InvocationHandler`接口并重写`invoke`方法来创建代理对象。`InvocationHandler`在接收到方法调用时...

    jdk动态代理 + 拦截器实现小例

    在这个“jdk动态代理 + 拦截器实现小例”中,我们将探讨如何利用Java的InvocationHandler接口和Proxy类来实现拦截器模式,以实现灵活的代码扩展和日志记录、性能监控等需求。 首先,让我们理解什么是动态代理。在...

    同城商业信息小程序源代码

    同城商业信息小程序源代码 同城信息的优势: –全国版,多城市版,本地版可自由切换,可满足更多用户的需求 –分类信息、商户入驻、红包广告、同城动态、代理加盟、五合一, 一个模块就相当于5个模块 –支持付费发帖...

    动态代理IP获取.rar

    本项目"动态代理IP获取.rar"是一个基于C#语言开发的小型工具,主要用于免费获取动态IP代理,并确保这些IP在获取时是实时有效的。 1. **动态IP代理**: 动态IP代理的核心在于“动态”二字,这意味着每次连接网络时...

    基于微信小程序的大学生返校考勤系统实现.pdf

    nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。在微信小程序后端开发中,nginx一般用作Web服务器,可以有效地处理静态文件服务,同时提供反向代理功能,将来自微信小程序客户端的...

    2023最新独立版校园跑腿校园社区小程序系统源码 附教程.zip

    【标题】中的“2023最新独立版校园跑腿校园社区小程序系统源码”指的是一个专门为校园生活服务设计的微信小程序系统。这个系统包含了最新的技术更新和优化,旨在为学生提供便捷的跑腿、外卖、表白、二手交易以及快递...

    小程序+java后台项目

    本文将深入探讨一个结合了小程序前端与Java后台的商城项目,旨在为开发者提供一个完整的线上购物平台解决方案。 一、小程序前端 1. **微信小程序**:作为移动端的轻量级应用,微信小程序以其无需下载、即开即用的...

    简谈jdk动态代理

    JDK动态代理机制是Java反射机制的一个重要应用,它允许程序在运行时创建一个实现了特定接口的新类实例,并且能够控制这些新类实例的方法调用行为。这种机制不仅提高了代码的灵活性,而且为诸如AOP(面向切面编程)等...

    滴滴顺风车小程序前端 后端.rar

    滴滴顺风车小程序是一款模拟滴滴出行的顺风车服务应用,其前端与后端的开发是构建此类应用程序的关键部分。这个压缩包文件“滴滴顺风车小程序...同时,这也是一个实践项目,有助于提升开发者在实际场景下的编程技能。

    小红书抓取,微信小程序,抓包工具.zip

    为了绕过反爬策略,可能需要处理登录验证、动态加载、IP限制等问题,还可能需要用到代理服务器、cookie管理以及模拟点击等技术。 其次,提到微信小程序,这是腾讯推出的轻量级应用平台,用户无需下载安装即可使用。...

    莱宝微信小程序.zip

    【标题】"莱宝微信小程序.zip" 是一个包含微信小程序开发资源的压缩包,它集成了商品展示、个人中心、设备使用情况跟踪、购买支付、购物车管理和收藏功能。这个项目利用了Java、JavaScript(JS)、JSON以及WXSS等...

    基于微信小程序的信息交互系统.docx

    在这样的背景下,开发一个基于微信小程序的信息交互系统具有重要的实际意义。 #### 发明名称 - **名称**:基于微信小程序的信息交互系统 #### 申请信息 - **申请公布号**:CN110827119A - **申请公布日**:2020...

    基于python的点餐微信小程序.rar

    【基于Python的点餐微信小程序】是一个利用Python技术开发的微信小程序应用,它结合了Python后端开发和微信小程序前端展示,为用户提供便捷的在线点餐服务。在本项目中,Python作为服务器端的主要编程语言,负责处理...

    chap532(小程序,破解时间限制)

    在IT行业中,小程序是一种轻量级的应用形式,通常在移动端运行,无需下载安装即可使用。它们为用户提供了便捷的交互体验,广泛应用于电商、服务预订、生活助手等多个领域。"破解时间限制"这个主题通常涉及到编程中的...

Global site tag (gtag.js) - Google Analytics