JDK动态代理总结

代理模式是一种设计模式,用于控制对目标对象的访问并允许在不修改原有对象的情况下增强功能。文章详细介绍了静态代理和动态代理的概念及优缺点。静态代理需要手动创建代理类,而动态代理则在运行时由JVM生成,JDK动态代理要求目标对象实现接口,而CGLIB则可通过继承实现。动态代理中的核心是InvocationHandler接口,它的invoke方法负责调用目标方法并实现功能增强。
摘要由CSDN通过智能技术生成

代理模式是指,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在用户类和目标对象之间起到中介的作用。

代理对象是为了在不修改目标对象的基础上,增强主业务逻辑。

使用代理模式的作用:

功能增强:在原有的功能上,增加了额外的功能。新增的功能叫做功能增强

控制访问:在代理中,控制是否可以调用目标对象的方法

代理模式可以分为两组:静态代理和动态代理

静态代理

静态代理:代理类是手工实现的java文件,同时代理的目标对象是规定的

优点:容易理解,使用方便

缺点:在目标类比较多的时候,会产生大量的代理类;当接口改变是,会影响目标类

实现步骤:

定义业务接口

// 表示功能的,厂家,商家都要完成的功能
public interface UsbSell {

    //定义方法 参数 amount:表示一次购买的数量,暂时不用
    //返回值表示一个u盘的价格。
    float sell(int amount);

    //可以多个其它的方法
    //void print();
}

定义接口实现类


//目标类: 金士顿厂家, 不接受用户的单独购买。
public class UsbKingFactory implements UsbSell {
    @Override
    public float sell(int amount) {
        System.out.println("目标类中的方法调用 , UsbKingFactory 中的sell ");
        //一个128G的u盘是 85元。
        //后期根据amount ,可以实现不同的价格,例如10000个,单击是80, 50000个75
        return 85.0f;
    }
}

代理商

//taobao是一个商家,代理金士顿u盘的销售。
public class TaoBao implements UsbSell {

    //声明 商家代理的厂家具体是谁
    private UsbKingFactory factory = new UsbKingFactory();

    @Override
    //实现销售u盘功能
    public float 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值