常用工厂设计模式之代理模式---用几个demo就能理解的代理模式


首先我们要知道,工厂设计模式分为三类:创建型模式、行为型模式、结构型模式
代理模式属于结构型


一、什么是代理

代理模式(Proxy Pattern):一个类代表另一个类的功能

很难懂?

其实用现实生活的话说,简单理解代理就是中介,而代理又分为静态代理动态代理

但是不管哪种代理都遵循一个前提:

代理要求代理类和被代理类(即目标类)要有共同的行为

那问题又来了,什么又是代理类与目标类的共同行为

我来告诉你:

  • 代理类与目标类实现同一个接口
  • 代理类继承目标类

诶,你会发现了,实现接口和继承,不就是多态的体现吗?

没错,说白了就是通过代理类实现目标类里面的方法

下面用几个简单的demo来演示一下


二、静态代理

静态代理:代理类在程序运行之前由程序员在开发过程已经写好了

1、代理类和目标类实现同一个接口

建一个接口

public interface Subject {
   
    public void chuzu();
}

建一个目标类

public class Fangdong implements Subject {
   
    @Override
    public void chuzu() {
   
        System.out.println("房屋出租,2000一个月");
    }
}

建一个代理类

public class Zhongjie implements Subject{
   
    //目标类的引用
    Fangdong fangdong = new Fangdong();
    @Override
    public void chuzu() {
   
        System.out.println("发布广告");
        System.out.println("带客户看房");
        //调用目标类方法
        fangdong.chuzu();
        System.out.println("另收中介费500");
    }
}

测试

public class demo1 {
   
    @Test
    public void test(){
   
        Subject subject = new Zhongjie();
        subject.chuzu();
    }
}

运行结果

在这里插入图片描述

2、代理类继承目标类

修改一下代理类

public class Zhongjie extends Fangdong{
   
    @Override
    public void chuzu() {
   
        System.out.println("发布广告");
        System.out.println("带客户看房");
        //直接调用父类(目标类)方法
        super.chuzu();
        System.out.println("另收中介费500");
    }
}

修改一下目标类

public class Fangdong  {
   
    public void chuzu() {
   
        System.out.println("房屋出租,2000一个月");
    }
}

测试


                
  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lichaohua!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值