代码
- 编写抽象角色
/**
* 抽象角色
*/
public interface Rent {
void rent();
}
- 编写真实角色
/**
* 真实角色
*/
public class Host implements Rent {
public void rent() {
System.out.println("出租房子");
}
}
- 编写代理角色
/**
* 代理角色
* 中介代理
* 除了可以完成房东的出租房屋以外 还可以签订合同等等
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Proxy implements Rent{
private Host host;
public void rent() {
host.rent();
}
public void contract() {
System.out.println("签订合同");
}
}
- 编写访问代理对象的角色
/**
* 访问代理对象
* 静态代理
* 优点
* 1. 使真实角色的操作更纯粹
* 2. 公共的业务交给代理类进行处理
* 3. 公共业务扩展时,方便管理
*
* 缺点
* 1. 一个真实角色需要一个代理角色
*/
public class Client {
public static void main(String[] args) {
Host host = new Host();
Proxy proxy = new Proxy(host);
proxy.rent();
proxy.contract();
}
}