静态代理模式

什么是代理?

代理受当事人的委托,代表当事人行使某种权利,做某种事情

我们来模拟一个租房的场景

 

 接口:租房的方法

//租房接口
public interface Rent {
    public void rent();
}

房东租房

//房东
public class Host implements Rent{
    public void rent() {
        System.out.println("房东要出租房子");
    }
}

你要通过房东租房

public class Client {
    public static void main(String[] args) {
        Host host = new Host();
        host.rent();
    }
}

运行结果:房东要出租房子【这样子自然而然是没有问题的】

但是租房的流程是繁琐的,例如看房,签合同等等。

因此我们需要引出一个代理类,帮我们完成部分业务----中介

 

 

接口、和房东类不变,新添加一个Proxy中介类

//代理角色
public class Proxy implements Rent{
    private Host  host;
    public Proxy() {
    }
    public Proxy(Host host) {
        this.host = host;
    }
    public void rent() {
        seeHouse();
        host.rent();
        hetong();
        fare();
    }
    //看房
    public void seeHouse(){
        System.out.println("中介带你看房");
    }
//签合同
    public void hetong(){
        System.out.println("签租赁合同");
    }
    //收费
    public void fare(){
        System.out.println("收中介费");
    }
}

客户端也就是需要租房的人直接访问代理中介即可

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

        Host host = new Host();
        //中介是代理角色,会有附属操作
        Proxy proxy = new Proxy(host);
        proxy.rent();
        //你直接接触的是中介,直接找中介租房
    }
}
//中介带你看房
房东要出租房子
签租赁合同
收中介费

好处:

  • 可以使真实角色的操作更加纯粹,不用去关注一些公共的业务

  • 公共业务交给代理角色,实现业务分工

缺点:

  • 一个真实角色就会产生一个代理角色:代码量会翻倍,开发效率变低
posted @ 2022-04-28 13:18  卷心菜-小白  阅读(25)  评论(0)    收藏  举报