首先有三要素: 1行为接口(这个例子是买水接口)2谁要买水 3 代理人帮买

1行为接口(这个例子是买水接口)

/**
 * 1   购买接口
 *
 * @author czh
 * @date 2023/5/12
 */
public interface ISubject {
    /**
     * 购买水方法
     */
    void buyWater();
}

2谁要买水(需要水的人)

/**
 * @author czh
 * @date 2023/5/12   购买接口实现类
 */
@Slf4j
public class MySelf implements ISubject {
    @Override
    public void buyWater() {
        log.info("买水");
    }
}

3代理人帮买

/**
 * 代理类(同事帮你购买水)
 *
 * @author czh
 * @date 2023/5/12
 */
@Slf4j
public class Colleague implements ISubject {

    private ISubject iSubject;

    public Colleague(ISubject iSubject) {
        this.iSubject = iSubject;
    }

    @Override
    public void buyWater() {
        iSubject.buyWater();
    }
}

4调用

/**
     * 代理模式
     */
    @Test
    void contextLoads() {
       //传入要购买的对象
        Colleague colleague = new Colleague(new MySelf());
      //同事代理购买
        colleague.buyWater();
    }