简介
思想应该是 中介 思想, 就是把一个任务抽离出来, 用另一个对象以组合的方式实现. 在Spring 中以 AOP(Aspect Oriented Programming, 面向切面编程)的方式出现, 可以理解为横向扩展
code
public class Client {
public static void main(String[] args) {
// Host host = new Host();
// host.rent();
Host host = new Host();
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
public class Host implements Rent{
@Override
public void rent() {
System.out.println("房东要出租");
}
}
public class Proxy {
private Host host;
public Proxy() {
}
public Proxy(Host h){
this.host = h;
}
public void rent() {
seeHoust();
host.rent();
hetong();
fare();
}
public void seeHoust() {
System.out.println("中介带你看房");
}
public void fare() {
System.out.println("收中介费");
}
public void hetong() {
System.out.println("签租赁合同");
}
}
public interface Rent {
void rent();
}
UML
优点
- 可以使真实角色的操作(出租)更加纯粹! 不用去关注一些公共的业务(看房子)
- 公共也就交给代理角色, 实现了业务的分工
- 公共业务发生扩展的时候, 方便集中管理.
确定
- 一个真实角色就会产生一个代理角色; 代码量会翻倍开发效率会变低.
角色分析
- 抽象角色 : 一般会使用接口或者抽象类来解决
- 真实角色 : 被代理的角色
- 代理角色 : 代理真实角色 , 代理真实角色后 , 我们一般会做一些附属操作
- 客户 : 访问代理对象的人!
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》