静态代理模式

文章通过一个静态代理模式的实例解释了其工作原理。真实对象(Me类)实现了Marry接口,表示要结婚的行为,而代理对象(Company类)也实现了相同的接口,作为婚庆公司,它在真实对象执行结婚前进行准备工作(如办理婚宴)并在之后处理后续事务(如收钱)。这样,代理对象增加了额外的功能,而真实对象专注于核心任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态代理模式

要求

  • 真实对象和代理对象都必须实现同一个接口
  • 代理对象要代理真实角色

好处

  • 代理对象可以做很多真实对象做不了的事情
  • 真实对象专注做自己的事情

下面,以我(真实对象)要结婚,找到婚庆公司(代理)帮忙为例。

代码示例

package com.thread;

public class TestStaticProxy {
    public static void main(String[] args) {
                   //Runnable接口实现类 与此函数中Me的作用相同
        new Thread( () -> System.out.println("我爱你")).start();

        new Company(new Me()).HappyMarry();

        /**
         * 将此两行代码类比
         * company与Thread均为代理 分别代理真实对象
         * 上面调用真实对新象(实现类)的start方法
         * 下面调用真实对象(Me)的HappyMarry方法
         */
    }
}
//定义接口Marry
interface Marry{
    void HappyMarry();
}

//真实角色 我要结婚
class Me implements Marry{
    @Override
    public void HappyMarry() {
        System.out.println("劳资杰份惹!");
    }
}
//代理角色 婚庆公司帮助我结婚
class Company implements Marry{
    //代理谁 --> 真实目标角色
    private Marry target;//代理的对象
    public Company(Marry target){
        this.target = target;
    }
    @Override
    public void HappyMarry() {
        before();
        this.target.HappyMarry();//这就是真实对象
        after();
    }

    private void before() {
        System.out.println("办理婚宴");
    }

    private void after() {
        System.out.println("收钱");
    }
}

输出结果

我爱你
办理婚宴
劳资杰份惹!
收钱

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值