java静态代理

静态代理

package com.yuanyu.thread;

public class Demo01 {
        //Teacher teacher = new Teacher(new You());
        //teacher.HappyStudy();

        new Teacher(new You()).HappyStudy();
    }
}

interface HappyStudy{
    void HappyStudy();
}

//真实角色 我去学习
class You implements HappyStudy{

    @Override
    public void HappyStudy() {
        System.out.println("我在学习java,超开心!");
    }
}


//代理角色 帮助我学习
class Teacher implements HappyStudy{
    private HappyStudy target;

    public Teacher(HappyStudy target) {
        this.target = target;
    }

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

    private void before() {
        System.out.println("学习前,要预习");
    }

    private void after() {
        System.out.println("学习后,要写博客");
    }
}

image

静态代理模式总结:

  1. 真实对象和代理对象都要实现同一个接口
  2. 代理对象要定义一个真实对象的属性加入构造方法,重写接口方法
  3. 主线程实例化代理对象传入真实对象的实例化

优点:

  • 代理对象可以做很多真实对象做不了的事情
  • 真实对象可以专注做好自己的事情
posted @ 2022-01-12 09:18  原语  阅读(32)  评论(0)    收藏  举报