静态代理

概述

自己需要做的事,叫别人去帮你做的更好(加料)

比如:你要结婚,找一个公司代理结婚,结婚的人还是你,但是前后增加了好事,布置炫酷的现场,收尾款等

使用方法

这里用结婚流程来说

  • 定义接口,即结婚的业务
  • 定义结婚对象实现接口中的方法
  • 定义代理结婚的公司实现接口中的方法,并传入代理对象,调用代理对象
  • 增加前后的一些布置
  • 创建代理类负责启动

实例

模拟结婚代理

/**
 * @function 静态代理模式
 * @class StaticProxy 启动代理
 *          Marry 结婚接口
 *          You 结婚对象
 *          WeddingCompany 公司代理对象
 */
public class StaticProxy {
    public static void main(String[] args) {
        //Thread 也是一个代理类 接口Runnable
        new Thread( ()-> System.out.println("I love dudu")).start();
//        和线程对比
        WeddingCompany weddingCompany = new WeddingCompany(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 before() {
        System.out.println("结婚之前,布置现场");
    }
    private void after() {
        System.out.println("结婚之后,收尾款");
    }
}

一句话

用同样的接口 把你要做的事情 加上大餐 的包装起来使用,更加舒服,省去烦恼,坐等安排。

原文地址:https://www.cnblogs.com/gbhh/p/13768073.html