代理
代理分为静态代理和动态代理
静态代理:
真实对象和代理对象都要实现同一个接口
代理对象要代理真实角色
好处:
代理对象可以做很多真实对象做不了的事情
真实对象专注做自己的事情
静态代理实例:
package com.wzz.A03多线程;
//静态代理总结
//真实对象和代理对象都要实现同一个接口
//代理对象要代理真实角色
//好处
//代理对象可以做很多真实对象做不了的事情
//真实对象专注做自己的事情
public class TestThread7 {
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 after() {
System.out.println("结婚之后,收尾款");
}
private void before() {
System.out.println("结婚之前,布置现场");
}
}