其他分享
首页 > 其他分享> > JDK动态代理

JDK动态代理

作者:互联网

1.概念

 

 

 2.使用代理模式的作用

 

 

 3. 实现代理的方式

  1. 静态代理

    1)代理类是自己手工实现的,自己创建一个java类表示代理类

    2)同时你所要代理的目标类是确定的。

    优点:  实现简单 容易理解

    缺点:1)当目标类增加了,代理类可能也需要成倍的增加

        2)当你的接口中的功能增加了 或者修改了 会影响众多的实现类

    示例:模拟用户购买u盘

      用户:客户端类 

      厂家:目标类 

      商家:代理类 代理某个品牌的u盘。 

    代码:  

/*
    实现步骤:
1.创建接口 定义卖u盘方法 表示你的厂家和商家做的事情
2. 创建厂家类 实现1接口
3. 创建商家代理类 实现1接口
4. 创建客户端类 调用商家方法买1个u盘
*/
public interface UsbSell {
    // amount:一次购入的数量 返回值表示1个u盘的价格
    float sell(int amount);
    // 还可以定义多个其它方法
}
// 目标类:金士顿厂家 不接受用户单独购买
public class UsbKingFactory implements UsbSell{
    @Override
    public float sell(int amount) {
        // 一个u盘85.0
        // 后期根据amount可以实现不同的价格

        return 85.0f;
    }
}

// 商家 代理金士顿u盘的销售
public class TaoBao implements UsbSell{
    // 声明 商家代理的厂家具体是谁
    private  UsbKingFactory factory = new UsbKingFactory();

    @Override
    public float sell(int amount) {
        // 向厂家发送订单
        float price = factory.sell(amount);
        // 商家需要加价
        price = price+5;

        // 这里可以添加其它代码 进行功能增强
        return price;
    }
}


public class ShopMain {
    public static void main(String[] args) {
        // 代理对象 淘宝
        TaoBao taoBao = new TaoBao();
        float price = taoBao.sell(1);
        System.out.println("通过商家淘宝 购买u盘单价:"+price);
    }
}

      代理类完成的功能

      1. 目标类中方法的调用(控制访问)

      2. 功能增强

  2. 动态代理

    优点:避免静态代理的缺点。目标类即使很多 代理类数量可以很少 当你修改了接口中的方法时,不会影响代理类。

    概念:在程序执行过程中,使用jdk反射机制,创建代理类,并动态指定要代理的对象。 即你不用手动创建TaoBao类就能创建代理对象

       

 

 

     分类

        

 

 

         

 

 

      JDK动态代理

      

         

 

         

 

标签:商家,JDK,price,float,代理,amount,动态,public
来源: https://www.cnblogs.com/LiLi2020/p/16297814.html