Java多线程03:静态代理

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

好处:代理对象可以做很多真实对象做不了的事情;真实对象专注做自己的事情

public class Main {
    public static void main(String[] args) {
        
        /**
         * 通过代理对象来实现真实对象的方法
         */
        new Proxy(new RealMovie()).play();
    }
}

/**
 * 代理对象和真实对象需要实现同一个接口
 * 这样任何实现该接口的真实对象都可以被代理而无需修改代码
 */
interface Movie{
    void play();
}

/**
 * 真实对象(电影)
 */
class RealMovie implements Movie{

    @Override
    public void play() {
        System.out.println("正在播放电影!");
    }
}

/**
 * 代理对象(电影院)
 */
class Proxy implements Movie{

    /**
     * 传入相同接口类型的对象进行代理
     */
    Movie proxy;
    
    public Proxy(Movie proxy) {
        this.proxy = proxy;
    }

    public void BeforeAdv(){
        System.out.println("电影院的第一个广告");
    }

    public void AfterAdv(){
        System.out.println("电影院的第二个广告");
    }

    @Override
    public void play() {
        
        /**
         * 代理方法中可以自定义功能
         */
        BeforeAdv();
        proxy.play();
        AfterAdv();
    }
}
posted @ 2021-09-14 17:06  振袖秋枫问红叶  阅读(36)  评论(0)    收藏  举报