设计模式之静态代理模式

静态代理模式


package com.example.demon;

/**
 * @author shf
 * @desc 静态代理演示
 * <p>
 * 你:真实角色
 * 婚庆公司:代理你 帮你处理结婚的事
 * 结婚:实现都实现结婚接口
 *
 * 静态代理模式:
 * 1:真实对象和代理对象都要实现同一个接口
 * 2:代理对象要代理真实对象
 * 3:好处->代理对象可以做很多真实对象做不到的事情,真实对象专注做自己的事情
 *
 * @date 2021-11-18 23:04:29
 */
public class StaticProxy {

    public static void main(String[] args) {
        //张三结婚
        WeddingCompany weddingCompany = new WeddingCompany(new You());
        weddingCompany.HappyMarry();
        System.out.println("-------------------------------------------------");
        //李四结婚
        new WeddingCompany(new Ta()).HappyMarry();

       //JDK中最典型的静态代理 线程的runnable接口
        new Thread(() -> {
            System.out.println(123);
            System.out.println(456);
        }).start();
        //匿名类的方式
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(123);
            }
        }).start();
    }

}

//结婚接口(每个人都可以实现此接口 -> 每个功能)
interface Marry {
    void HappyMarry();
}

//真实目标角色(被代理对象)你结婚(每个功能都要去结婚)
class You implements Marry {

    @Override
    public void HappyMarry() {
        System.out.println("你(张三)要结婚了");
    }
}

//真实目标角色(被代理对象)他结婚(每个功能都要去结婚)
class Ta implements Marry {

    @Override
    public void HappyMarry() {
        System.out.println("他(李四)要结婚了");
    }
}

//代理角色(代理对象)婚庆公司 帮助你结婚
class WeddingCompany implements Marry {
    //代理谁 真实目标角色
    private Marry marry;

    //通过构造器传入真实对象
    public WeddingCompany(Marry marry) {
        this.marry = marry;
    }

    @Override
    public void HappyMarry() {
        //结婚前
        before();
        //真实对象
        this.marry.HappyMarry();
        //结婚后
        after();
    }

    private void after() {
        System.out.println("结婚之后收尾款");
    }

    private void before() {
        System.out.println("结婚前婚庆公司帮忙布置现场");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值