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