静态代理_代理演示结婚,婚庆公司案例

package com.qiliang.demo05_静态代理;
// 代码演示结婚,婚庆公司案例
public class StaticProxy {
    public static void main(String[] args) {
        // 结婚对象
        You you = new You();
        you.HappyMarry(); // 本来这样执行结婚的方法
        // 现在不这样执行 , 把"你"给婚庆公司
        // 创建代理对象
        WeddingCompany weddingCompany = new WeddingCompany(you);
        weddingCompany.HappyMarry();
    }
}

// 定义 结婚 接口
interface Marry{
    void HappyMarry();
}

// 结婚对象_真实角色 实现类
class You 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 before() {
        System.out.println("结婚之前布置现场");
    }

    private void after() {
        System.out.println("结婚之后收尾款");
    }
}
/*
静态代理模式总结:
    真实对象和代理对象都要实现同一个接口
    代理对象要代理真实角色
好处:代理对象可以做很多真实对象做不了的事情
     真实对象专注做自己的事情

 */
posted @ 2020-04-27 16:02  阿亮在努力  阅读(101)  评论(0)    收藏  举报