静态代理

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

好处:
真实对象可以专注于自己的事情
代理对象可以做真实对象做不了或不必要做的事情

public class StaticProxy {
    public static void main(String[] args) {
        Person Zs = new Person();
        //婚礼原本要张三执行,即Zs.HappyMarry();
        //但实际上是是婚庆公司在执行,并且多做了before()和after()两个方法
        WeddingCompany weddingCompany = new WeddingCompany(Zs);
        weddingCompany.HappyMarry();
    }
}

interface Marry{       //个人和公司都要实现的接口
    void HappyMarry();
}

//真实角色,只有一个最核心的方法
class Person implements Marry{
    @Override
    public void HappyMarry() {
        System.out.println( "张三要结婚了!!");
    }
}

//代理角色,只是帮助结婚,除了最核心的方法,还有自己额外的方法
class WeddingCompany implements Marry{

    private Marry target;   //被代理的对象

    public WeddingCompany(Marry target) {   //有参构造
        this.target = target;
    }

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

    private void after() {
        System.out.println("结婚之后,收尾款!");
    }

    private void before() {
        System.out.println("结婚以前,布置现场!");
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容