其他分享
首页 > 其他分享> > 什么是静态代理模式

什么是静态代理模式

作者:互联网

什么是代理模式?

代理模式可以实现帮助被代理者完成一些前期的准备工作和后期的善后工作,但是核心的业务逻辑仍然是由被代理者完成。

什么是静态代理?

静态代理就是代理者能专门为被代理对象做一些额外的工作,但是实际的核心业务逻辑还是由代理者调用被代理者来完成!

单单说概念其实也并不是能的理解深刻,下面来举个生活中的栗子
房东中介住户三个对象,房东要出租房子,但是房东有五栋楼,要是他每套房子出租都亲自跟住户打交道,那他真的分身乏术!这时候他找来了中介,由中介负责跟住户打交道,房东不管也不过问,只管负责把房间钥匙交给中介,住户找中介租房子,由中介跟住户完成看房、签合同、收房租。下面是栗子的代码实现:

代理者与被代理者共同实现的接口(房东跟中介的共同目的)

/**
 * 静态代理模型
 * */
public interface  Rent {
    void rentHouse();   //出租房子
}

被代理者(房东)

/**
 *  静态代理模型:
 * (房东)真实对象
 * */
public class Landlord implements Rent {
    public void rentHouse() {
        System.out.println("房东出租房子~~~");
    }
}

代理者(中介)

/**
 * 静态代理模型:
 * (中介)代理人
 * 代理对象可以更加专注于业务,扩充功能
 * */
public class Agent implements Rent{
    private Landlord landlord;  //包含真实对象

    public Agent(Landlord landlord) {
        this.landlord = landlord;
    }

    public void setLandlord(Landlord landlord) {
        this.landlord = landlord;
    }

    public Agent() {
    }

    public void rentHouse() {   // 可以在该方法中调用其他方法,扩展功能!
        pick(); //看房
        landlord.rentHouse();   //调用真实对象的出租房方法
        charge();   //收中介费
        sign(); // 签租房合同
    }
    public void pick(){
        System.out.println("中介带你看房!");
    }
    public void charge(){
        System.out.println("中介收取中介费!");
    }
    public void sign(){
        System.out.println("签租房合同!");
    }
}

住户租房(真实调用者)

/**
 * 静态代理模型:
 * (用户去租房)使用者
 * */
public class Renter {
    public static void main(String[] args) {
        Landlord landlord = new Landlord();
        Agent agent = new Agent();
        agent.setLandlord(landlord);
        agent.rentHouse();
    }
}

应用场景:

标签:房东,静态,void,代理,模式,中介,landlord,public
来源: https://blog.csdn.net/YOL888666/article/details/121317227