Java多线程:静态代理

静态代理

  • 真实对象和代理对象都要实现同一个接口
  • 代理对象要代理真实角
  • 优点:
    • 代理对象可以做真实对象做不了的事
    • 真实对象专注做自己的事

Runnable实现创建多线程的方法使用了静态代理,Runnable是函数式接口

public class StaticProxy {
    public static void main(String[] args) {
        //缩略为
//        ApplicationCompany applicationCompany = new ApplicationCompany(new You());
//        applicationCompany.ApplyPhd();
        new ApplicationCompany(new You()).ApplyPhd();
        
        //lambda表达式,代理与创建多线程相似
        //Thread为代理
        new Thread( ()-> System.out.println("申博士") ).start();
    }
}

interface Phd{
    void ApplyPhd();
}

//真实角色
class You implements Phd{
    @Override
    public void ApplyPhd() {
        System.out.println("申请博士");
    }
}

//代理角色
class ApplicationCompany implements Phd{
    //代理->真实目标角色
    private Phd people;

    public ApplicationCompany(Phd people) {
        this.people = people;
    }

    @Override
    public void ApplyPhd() {
        before();
        this.people.ApplyPhd();//真实对象
        after();
    }

    private void before() {
        System.out.println("准备材料,提交申请");
    }
    
    private void after() {
        System.out.println("申到学校,收尾款");
    }
posted @ 2022-04-11 16:46  chachan53  阅读(37)  评论(0编辑  收藏  举报