第六天学习静态代理模式

静态代理模式

package lambdal;
/*
* 真实对象和代理对象都实现同一个接口
* 代理对象要代理真实角色的事情,所以要声明一个接口
* 通过接口调用真实对象需要做的事情,还可以做其它事情
* 实例化时只需要将真实对象传入代理对象即可
* 代理对象可以完成真实对象无法做的事,真实对象只做自己的事
* */


public class StaticProxy {
    public static void main(String[] args) {
        You you = new You();  //真实对象实例化
        WddingCompany wddingCompany = new WddingCompany(you);
        wddingCompany.HappyMarry();
    }
}

interface Marry{
    void HappyMarry();
}

//真实角色,你
class You implements Marry{
    @Override
    public void HappyMarry() {
        System.out.println("结婚");
    }
}
//代理角色,婚庆公司
class WddingCompany implements Marry{

    //代理做的事情
    private Marry target;

    //代理婚礼事宜
    public WddingCompany(Marry target) {
        this.target = target;
    }

    @Override
    public void HappyMarry() {
        //结婚之前,代理对象做的事情
        before();
        //结婚时,我做的事情(真实对象)
        this.target.HappyMarry();
        //结婚之后,代理对象做的事情
        after();
    }
    //婚礼之前
    private void before() {
        System.out.println("布置现场");
    }
    //婚礼之后
    private void after() {
        System.out.println("收尾款");
    }
}
  • 多线程中Thread类,Runnable接口,start()方法 也可以以此类比。
posted @ 2020-05-14 23:24  yukinon  阅读(117)  评论(0编辑  收藏  举报