代理模式其实就是类似于明星与经纪人,房东和中介的关系,如果顾客需要调用找房东,可以通过先找到中介,然后中介再与房东联系,最后完成交接,如图:
代理模式,房东和中介都实现同一个接口,调用中介来调用房东,这样修改的时候,只需要修改接口,方便
实现静态代理的方法非常简单,就是在中介的类中创建房东变量,添加构造器,如下:
出租接口,房东和中介都继承
package com.qcby.Mmain;
/**
* @Classname Lessors
* @Description 这是代理接口
* @Date 2021/8/27 14:24
* @Created by thx
*/
public interface Lessors {
void lease();
}
房东类:
package com.qcby.Mmain;
/**
* @Classname HouseOwner
* @Description 房东
* @Date 2021/8/27 14:24
* @Created by thx
*/
public class HouseOwner implements Lessors{
@Override
public void lease() {
System.out.println("HouseOwner.lease" + "房东统一出租");
}
}
中介类:
package com.qcby.Mmain;
/**
* @Classname HouseOwnerProxy
* @Description 房东经纪人
* @Date 2021/8/27 14:25
* @Created by thx
*/
public class HouseOwnerProxy implements Lessors{
private HouseOwner houseOwner;// 创建房东对象
public HouseOwnerProxy(HouseOwner houseOwner) {
this.houseOwner = houseOwner;//生成有参的构造器
}
@Override
public void lease() {
System.out.println("HouseOwnerProxy.lease 经纪人正在与房东联系");
houseOwner.lease();//中介调用房东的方法
System.out.println("HouseOwnerProxy.lease 经纪人拿到奖金");
}
}
Main 方法:
创建房东和中介对象,中介传递房东,调用出租方法
package com.qcby.Mmain;
/**
* @Classname Main
* @Description 主方法
* @Date 2021/8/27 14:26
* @Created by thx
*/
public class Main {
public static void main(String[] args) {
HouseOwner houseOwner = new HouseOwner();
HouseOwnerProxy houseOwnerProxy = new HouseOwnerProxy(houseOwner);
houseOwnerProxy.lease();
}
}
结果如下: