【学习笔记】线程(二)之静态代理模式

线程(二)之静态代理模式

 

静态代理模式的简介

 

下面我们写一段代码了解一下静态代理模式

package com.thread.demo02;
​
public class StaticProxy {
    public static void main(String[] args) {
        You you = new You();
        WeddingCompany company  = new WeddingCompany(you);
​
        company.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();
    }
​
    public void before(){
        System.out.println("结婚之前,布置现场");
    }
    public void after(){
        System.out.println("结婚之后,付尾款");
    }
}

 

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

代理对象要代理真实对象,真是对象作为参数传到代理对象的构造方法,然后在调用方法

好处:

代理对象可以做很多真实对象做不了的事情

真实对象可以专注做自己的事情

 

静态代理模式和多线程的对比:

 

我们可以把代理对象代理真实对象的过程精简一下

new WeddingCompany(new You()).HappyMarry();

对比多线程:

new Thread(()-> System.out.println("xxxxxxxx")).start();

 

new Thread() 就相当于代理对象,()相当于真实对象,它们都实现了Runnable 接口

然后start() 就相当于 HappyMarry()

 

 

得出结论:

静态代理是多线程底部的实现原理

posted @ 2022-07-31 16:58  GrowthRoad  阅读(45)  评论(0编辑  收藏  举报