问题
房东想出租房子,但是不想参与租房的这个过程。
中介诞生了,中介就是代理端。
思路
通过接口规定出租行为
Rentable
Rentable.java
public interface Rentable {
void rent();
}
房东出租行为实现Rentable接口
Host.java
@Component
public class Host implements Rentable{
@Override
public void rent() {
System.out.println("房东:我要出租房子");
}
}
中介也实现Rentable接口
Proxy.java
@Component
public class Proxy implements Rentable{
// 代理房东
private final Host host;
@Autowired
public Proxy(Host host) {
this.host = host;
}
@Override
public void rent() {
before();
host.rent();
after();
}
// 扩展功能
private void before(){
System.out.println("看房 签合同");
}
private void after(){
System.out.println("钱到手");
}
}
测试
public class StaticProxyTest {
@Test
public void test(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
Proxy bean = context.getBean(Proxy.class);
bean.rent();
}
}
看房 签合同
房东:我要出租房子
钱到手
优点
- 横向扩展
- 方便管理
缺点
- 一个代理类就要求有一个被代理的类
- 代码急剧膨胀 形成灾难