Java中的多线程学习笔记003:静态代理

https://space.bilibili.com/95256449/channel/detail?cid=146244

静态代理

package com.stark.study001;

/**
 * 静态代理总结:
 * 真实对象和代理对象都要实现同一个接口
 * 代理对象要代理真实对象
 *
 * 好处:
 * 代理对象可以做很多真实对象做不了的事情
 * 真实对象专注于做自己的事
 * **/
public class StaticProxy {
    public static void main(String[] args) {
//        //真实对象
//        You you = new You();
////        you.happyMarry();
//        //代理对象
//        WeddingCompany weddingCompany = new WeddingCompany(you);
//        weddingCompany.happyMarry();
        new WeddingCompany(new You()).happyMarry();

        //和Thread类的对象对比
        new Thread(()-> System.out.println("我爱你")).start();
    }
}

interface Marry {
    void happyMarry();
}
//真实角色,你去结婚
class You implements Marry {
    @Override
    public void happyMarry() {
        System.out.println("秦老师要结婚啦,超开心");
    }
}
//代理角色,帮你结婚
class WeddingCompany implements Marry {
    //代理真实对象
    private Marry target;

    public WeddingCompany(You you) {
        this.target = you;
    }

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

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

    private void after() {
        System.out.println("结婚之后,收尾款");
    }
}
posted @ 2020-12-01 16:42  Stark0x01  阅读(128)  评论(0)    收藏  举报