package com.Java;

interface Marry {
public void HappyMarry();
}

//静态代理总结
//代理对象和真实对象都要实现同一个接口
//代理对象要代理真实角色

//好处
//代理对象可以做很多真实对象做不了的事情
//真实对象专注做自己的事情
public class StaticDaili {
public static void main(String[] args) {
new Shopping(new You()).HappyMarry(); //执行方法
}
};
//我
class You implements Marry {
@Override
public void HappyMarry() {
System.out.println("我是学生,别收我钱!");
}
}
//代理角色 帮助我结婚
class Shopping implements Marry {
// 我
private Marry target;

public Shopping(Marry target) {
this.target = target;
}
@Override
public void HappyMarry() {
before(); //代理干的事情
target.HappyMarry(); //我干的事
after(); //代理干的事情
}
private void before() {
System.out.println("婚礼前 先交钱");
}
private void after() {
System.out.println("婚礼后 入洞房");
}
}