代理模式
在现实生活中,经常会有代理模式的场景,如房屋中介、婚介所等等
事例引入
以房屋中介为实例,在中介不普及的时候,客户需要租房子,直接找房东即可,房东直接租房给客户,对应的关系如下:

这样就产生了一个问题,如果客户直接找房东的话,房东就会产生大量的操作,如打广告、带客户看房、签合同等等,此时便产生了房屋中介,房东仅需要将房钥匙提供给中介,中介来完成将房子租出去这个目标,并且打广告、签合同之类全部交给中介去完成:

对于客户而言,并没有发生太多的变化,无论找中介还是房东,都可以完成租房的需求,中介和房东都需要完成租房子给客户这同一个目标,而对于房东而言,不需要操心签合同等繁琐的事情,只需要提供房钥匙给中介即可。
在上述的例子中,出现了四个角色:
- 抽象角色:对应【租房】这个事情,通常使用接口或抽象类来解决
- 真实角色:被代理的角色,对应【房东】
- 代理角色:代理真实角色,代理后一般会有一些附属操作如看房、签合同等,对应【中介】
- 客户:访问代理角色的角色,对应【客户】
代码实现
非代理模式
在以往客户直接和房东进行交涉的流程中,实现过程如下:
租房接口
public interface Rent {
public void rent();
}
房东类
public class Host implements Rent{
@Override
public void rent() {
System.out.println("给房子打广告");
System.out.println("带客户看房子");
System.out.println("根客户签合同");
System.out.println("房东的房子被租出去了"

本文深入探讨了代理模式,通过房屋中介的例子介绍了非代理、静态代理和动态代理模式。静态代理模式将公共业务逻辑移交给中介,使房东角色更专注,但代码量增加。动态代理模式则解决了这一问题,能在运行时动态生成代理类,减少代码冗余。文章还提供了相关代码实现以帮助理解。
最低0.47元/天 解锁文章
648

被折叠的 条评论
为什么被折叠?



