Java多线程(2)

Java多线程

  • 本系列博客为学习Java多线程(狂神说)时所做的笔记

静态代理模式

//静态代理模式
public class StacticProxy {
    public static void main(String[] args) {
        You you = new You();
        WeddingCompany weddingCompany = new WeddingCompany(you);
        weddingCompany.HappyMarry();
    }
}
interface Marry{
    void HappyMarry();
}

//真实角色
class You implements Marry{
    @Override
    public void HappyMarry(){
        System.out.println("我要结婚了!");
    }
}

//代理角色
class WeddingCompany implements Marry{


    private Marry target;

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

    @Override
    public void HappyMarry() {
        before();
        this.target.HappyMarry();
        after();
    }

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

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

这里是在创建代理对象时,将实体对象传入代理对象的构造函数,于是实体对象就是代理对象的内部类

实体对象和代理对象都要实现同一个接口。

客户端调用代理对象的方法,而不是调用实体对象的方法。但是调用代理对象的方法的实质,就是调用实体对象的方法,只不过做了一层封装。

代理模式和多线程

这里学习静态代理模式的原因是为了对多线程有一个更好的了解,多线程的Thread实现了Runnable接口,创建它的参数也实现了Runnable接口,所以Thread就是代理对象,传给他的参数对象就是实体对象。

这里写图片描述
posted @ 2021-03-14 18:14  Xavi_ZHANG  阅读(50)  评论(0)    收藏  举报
Live2D