Java 中动态代理(基于接口和基于子类

本文介绍了Java中的动态代理技术,包括基于接口的代理和基于子类的代理。通过示例展示了如何使用Proxy和Enhancer创建代理对象,实现在不修改源码的情况下对方法进行增强。在接口代理中,代理销售过程,使得厂家收益减少,而代理商获得额外利润。而在子类代理中,借助cglib库,即使被代理类为非最终类,也能实现相同的效果。
摘要由CSDN通过智能技术生成

//销售

public void saleProduct(float money){

System.out.println(“销售产品,赚钱:” + money);

}

}

  • 通过代理商后进行销售

public class Consumer {

public static void main(String[] args) {

final Producer producer = new Producer();

IProducer proxyProducer = (IProducer) Proxy.newProxyInstance(producer.getClass().getClassLoader(),

producer.getClass().getInterfaces(),

new InvocationHandler() {

/**

  • 作用:执行被代理对象的任何借口方法都会经过该方法

  • @param proxy:代理对象的引用

  • @param method:当前执行的方法

  • @param args:当前执行方法所需的参数

  • @return:和被代理对象方法有相同的返回值

  • @throws Throwable

*/

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

//增强的代码

Object returnValue =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值