静态代理模式学习笔记-房屋租赁
作者:互联网
10、代理模式
代理模式是Spring AOP的底层 【SpringAOP和SpringMVC面试必问】
代理模式分类:
- 静态代理模式
- 动态代理模式
10.1 静态代理模式
角色分析:
- 抽象角色:共同完成的事情,如租房,一般通过接口或抽象类实现
- 真实角色:被代理的角色,如房东
- 代理角色:代理真实角色,如中介,中介是真实角色房东的代理,一般会有些附属操作
- 客户:租客
理解:
- 租客无法接触房东,但还是租到了房子,因为通过了代理角色中介。
- 真正租房子的是房东,实现出租的是中介
代码步骤:
-
接口
public interface Rent { public void rent(); //中介和房东共同的需求 }
-
真实角色
public class Host implements Rent{ public void rent() { System.out.println("房东要出租房子"); //房东需要租房子,但是无法找到客户,所以交给中介代理 } }
-
代理角色
public class Proxy implements Rent{ private Host host; //组合优于继承原则,表示中介拿到了代理的房东 public Proxy(Host host) { this.host = host; } public Proxy() { } public void rent() { seeHome(); host.rent(); //代理帮助房东租房子 fare(); hetong(); } //中介提供的其他服务 public void seeHome(){ System.out.println("中介带你看房"); } public void fare(){ System.out.println("收中介费"); } public void hetong(){ System.out.println("签租赁合同"); } }
-
客户访问代理角色
public class Client { public static void main(String[] args) { Host host = new Host(); //租客要找房东 Proxy proxy = new Proxy(host); //因为无法直接找到房东,所以拜托代理 proxy.rent(); //代理帮忙租到了房子 } }
代理模式的好处:
- 可以使真实角色的操作更加纯粹(不用管诸如看房的其他事情)
- 其他的事情就交给了代理角色,实现了业务的分工
- 其他的事情发生扩展的时候,方便集中管理
代理模式的缺点:
- 1个真实角色就会产生1个代理角色;代码量会翻倍,开发效率会变低
标签:房东,角色,静态,void,代理,笔记,host,public,租赁 来源: https://www.cnblogs.com/henjie/p/14512528.html