静态代理
1、没使用代理
场景:房东要出租房子。
// 接口
public interface Rent {
void ren();
}
// 房东真实对象
public class Host implements Rent{
@Override
public void ren() {
System.out.println("房东出租房子");
}
}
// 客户直接找房东
public class Client {
public static void main(String[] args) {
Host host = new Host();
// 直接找房东租房子
host.ren();
}
}
2、使用静态代理
添加一个代理角色
public class Proxy implements Rent{
// 代理房东
private Host host;
public Proxy(Host host) {
this.host = host;
}
@Override
public void ren() {
see();
host.ren();
sgin();
}
public void see() {
System.out.println("带客户看房子");
}
public void sgin() {
System.out.println("签合同");
}
}
然后客户不直接和房东交互,而是与代理角色交互
public class Client {
public static void main(String[] args) {
Host host = new Host();
Proxy proxy = new Proxy(host); // 把房东给代理人,代理房东处理事务
proxy.ren(); // 和代理角色交互,不直接和房东交互
}
}