静态代理

静态代理

** 静态代理模式**
** 真实对象和代理对象都要实现同一个接口**
** 代理对象要代理真实角色**

package Thread.Demo04;

/**
 * 静态代理模式
 * 真实对象和代理对象都要实现同一个接口
 * 代理对象要代理真实角色
 * <p>
 * 好处:1代理对象可以做很多真实对象做不了的事情;2真实对象可以专注做自己的事情
 *
 * @author liu
 */



// 加了static 才可以,是因为 main()是静态的
// 如果you类不是静态的话,new You()就相当于是new this.You()
// 如果You类是静态的话,new You()就相当于是new StaticProxy.You(),这样就没有this
public class StaticProxy {
    public static void main(String[] args) {
        WeddingCompany company = new WeddingCompany(new You());
        company.happyMarry();
    }


    interface Marry {
        void happyMarry();
    }

    // 真实角色,去结婚
    static class You implements Marry {

        @Override
        public void happyMarry() {
            System.out.println("我要结婚了");
        }
    }

    // 代理角色
    static class WeddingCompany implements Marry {
        private static Integer count = 1;
        private Marry name;

        public WeddingCompany(Marry name) {
            this.name = name;
        }

        @Override
        public void happyMarry() {
            //代理能做其他事
            before();
            this.name.happyMarry();
            after();
        }

        public void before() {
            System.out.println("筹备婚宴");
        }

        public void after() {
            System.out.println("收尾款");
        }
    }
}
posted @   小幼虫虫  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示