09 静态代理模式

zhanjianhai / 2023-08-30 / 原文

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("婚庆公司-->帮助雇主完成婚礼相关的工作");
    }
}