Java代理

代理(重点)

是一种设计模式(设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。),提供对目标对象另外的访问方式,即通过代理对象访问目标对象。

代理就是帮人做事情。比如我们现在很常用的代购场景,我媳妇需要买一套护肤品,去官网买的话比较贵,所以就找代购去买,代购其实也没有这个护肤品,但是他有渠道直接跟护肤品的商家有关系,能直接从商家拿这个护肤品,你是没办法联系上这个商家的,但是他肯定不能一点酬劳都不收,所以他会加价卖给你,这就是代理的典型模式。

代理的好处

可以在目标对象实现的基础上增强额外的功能,即扩展了目标对象的功能。(如果需要修改别人的东西,不需要修改别人的代码,只需要引用他的对象,即代理,在代理上实现扩展自己的功能)

image-20220519091510925

代理模式
定义

给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用

目的

通过代理对象间接的访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性

通过代理业务对原由业务增强

实现方式

静态代理:代理类是自己手动创建的,所需要代理的目标类是确定的,实现简单容易理解

多态代理:

基于jdk的多态代理——————需要有接口(多使用)

基于CGLIB的多态代理——————需要有父类(但是在创建对象上,要使用字节码来进行创建对象,耗时会比JDK久很多。对于final修饰的方法是无法进行代理的。)

image-20220519093025617

通过实现同一个接口,来达到多态代理的效果、

静态代理举例

BuyClothes接口

//买衣服接口
public interface BuyClothes {
   
    void cloths(String size);
}

ClothesFactory实现类

//工厂实现类
public class ClothesFactory implements BuyClothes {
   
    @Override
    public void cloths(String size) {
   
        System.out.println("为您制作一套size为"+size+"的衣服");
    }
}

ProxyClothes实现类

//代购实现类
public class ProxyClothes implements BuyClothes {
   
    //包含目标对象
    public ClothesFactory clothesFactory;
    //有参构造函数
    public ProxyClothes(ClothesFactory clothesFactory) {
   
        this.clothesFactory = clothesFactory;
    }

    public ProxyClothes()</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值