静态代理模式

package com.thread;

/**
 * 静态代理模式总结:
 * 真实对象和代理对象都要实现同一个接口
 * 代理对象要代理真实对象
 */

//好处:
    //代理对象可以做很多真实对象做不了的事情
    //真实对象专注做自己的事情

public class StaticProxy {
    public static void main(String[] args) {

        new Thread(()-> System.out.println("我爱你")).start();     //Thread代理了()-> System.out.println("我爱你"),调用了start

        new WeddingCompany(new You()).HappyMarry();         //WeddingCompany代理了new You(),调用了HappyMarry

//        You you = new You();
//        WeddingCompany weddingCompany = new WeddingCompany(new You());      //new 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("结婚之后,收尾款");
    }
}

posted @   好12  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示