7.1、Java多线程——静态代理模式

本文介绍了Java中的静态代理模式,通过一个结婚场景的例子详细解释了静态代理的角色和工作原理。静态代理模式使得代理角色可以在真实角色执行任务前后添加额外的操作,如婚庆公司的布置现场和收尾款。同时,作者指出静态代理模式与多线程创建原理类似,都是通过代理类处理额外逻辑,保持真实角色专注于核心任务。
摘要由CSDN通过智能技术生成

7.1、Java多线程——静态代理模式

什么是静态代理?

先说说我的理解,静态代理分为四个部分

        真实角色、真实角色要做的事情、代理角色、以及最终做了什么

        举个简单的例子,假设 我现在要结婚了 这件事情中 我就是真实角色,要做的事情就是结婚。而婚庆公司就是代理角色,他需要在我结婚之前在婚礼现场做一些布置,在结婚之后要问我结尾款,那么最终做了三件事分别是 布置现场、结婚、问我结尾款。

        那我们现在用代码来实现一下静态代理,代码如下所示:

package com.hkl.demo02;

public class StaticProxy {
    public static void main(String[] args) {
        WeddingProxy weddingProxy = new WeddingProxy(new You());
        weddingProxy.HappyMarry(); 
        //也可以一句话完成如下
        new WeddingProxy(new You()).HappyMarry();
    }
}

interface Marry {
    //结婚
    void HappyMarry();
}

//真实角色
class You implements Marry {
    //要去结婚了
    public void HappyMarry() {
        System.out.println("结婚的日子到了!!!");
    }
}

//婚庆公司代理 布置结婚现场
class WeddingProxy implements Marry {

    private Marry target;

    public WeddingProxy(Marry target) {
        this.target = target;
    }

    //婚庆公司代理
    public void HappyMarry() {
        before();
        this.target.HappyMarry();
        after();
    }

    private void before() {
        System.out.println("结婚之前布置现场");
    }

    private void after() {
        System.out.println("结婚之后收尾款");
    }

}

        在代码中可以看到,真实角色 和 代理角色 都必须要继承 Marry 这个接口,代理角色要代理真实角色 在真实角色要做的事情的前后 代理角色可以去完成额外要做的其他的事情。

        这样的好处就是代理角色可以做很多真实角色做不了的事情,而真实角色只需要专注做好自己的事情即可

其实我们可以对比一下 静态代理模式 和 多线程Runable接口创建线程 的方式很相似,来看看代码如下:

//先来看看Thread 的方式如下:
new Thread(传入自定义线程对象).start();

//再来对一下咱们静态代理模式如下:
new WeddingProxy(new You()).HappyMarry();

        不难看出 线程的创建 底层原理其实就是静态代理,都是先new一个代理类然后将真实角色对象传入代理类对象中,再调用其执行方法。真实角色就专注做好自己的事情,其他的交给代理类去处理就好

        我理解的就是:我们自定义的线程类专注做好run方法里定义的事情,然后其他的东西交给 Thread 代理类去处理就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值