package ThreadDemo;
// 静态代理模式,以结婚为例子
// 对比线程
/*
1.代理对象 与真实对象 都实现 同一个接口
2. 代理对象帮助真实对象完成工作
3.好处:
-代理对象帮助完成一些真实对象做不到的事情
-真实对象可以更加专注完成处理自己的事情
*/
public class Test09_StaticProxy {
public static void main(String[] args) {
// 对比 静态代理 与 线程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("结婚");
}
}).start(); // 线程也是静态代理!new Thread()是代理对象;new Runnable()是真实对象
WeddingCompany weddingCompany= new WeddingCompany(new Somebody()); // 代理对象 与真实对象
}
}
interface Marry{
default void HappyMarry(){};
}
class Somebody implements Marry{
@Override
public void HappyMarry() {
System.out.println("雇主很开心");
}
}
class WeddingCompany implements Marry{
Somebody target;
public WeddingCompany(Somebody target) {
this.target=target; // 真实对象
target.HappyMarry();
HappyMarry();
}
@Override
public void HappyMarry() {
System.out.println("婚庆公司-->帮助雇主完成婚礼相关的工作");
}
}