通过中介找房子 一个静态代理模式
静态代理的角色分析:
- 抽象角色——一般用接口或者抽象类实现
- 真实角色——被代理的juese
- 代理角色——代理真实角色 代理真实角色后一般会做一些附属操作
- 客户角色——使用代理角色来进行一些操作
代码实现
Rent.java 抽象角色
public interface Rent {
public void rent();
}
Host.java 真实角色
public class Host implements Rent{
public void rent(){
System.out.println("房屋出租");
}
}
Proxy.java 代理角色
public class Proxy implements Rent{
private Host host;
public Proxy(Host host) {
super();
this.host = host;
}
public void setHost(Host host) {
this.host = host;
}
public Proxy() {
// TODO Auto-generated constructor stub
}
public void rent(){
seeHouse();
host.rent();
fare();
}
public void seeHouse(){
System.out.println("带房客看房");
}
public void fare(){
System.out.println("收取中介费");
}
}
Client.java 客户角色
public class Client {
public static void main(String[] args) {
Host host=new Host();
Proxy proxy=new Proxy(host);
proxy.rent();
}
}
使用静态代理的好处:
- 使得真实角色处理的业务更加地纯粹,不再去关心一些公共的事情
- 公共的业务由代理来完成——实现业务的分工
- 公共业务发生扩展时变得更加集中和改变
缺点:
- 类多了——多了代理类,工作量变大了,开发效率就变低了
我们想拥有静态代理的好处,又不想有静态代理的坏处,于是出现了动态代理,下一篇再讲。