23种设计模式之代理模式(静态代理)
一:为什么学习代理模式:
代理模式实际上是SpringAOP的底层! 【SpringAOP 和 SpringMVC (面试必问)】
二:代理模式(基本概念):
基本概念:代理模式的核心作用就是通过代理,控制对对象的访问。这跟实际中是一样的,例如说我们租房子时遇到的中介,这就是一个代理,比如有人要找中介帮忙出租房屋,那么首先处理这事的就是中介,虽然自己的房子需要出租给其他人,但是出租房子前后的一些必须要做的事(带住客看房,签订住房合同,收取租房费用)等等,都由这个中介来处理。
在程序中也是如此,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。这也是AOP的实现原理。
三:那么代理模式的核心角色该如何设计呢?
角色分析:
·抽象角色: 通过接口或抽象类声明真实角色实现的业务方法
·真实角色: 实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。(被代理的角色)它只关注真正的业务逻辑,比如拍戏。
·代理角色: 实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。如谈合同,布置场地等等。
·客户:访问代理对象的人
四:代理模式的分类
1、静态代理 (静态代理是我们自己创建一个代理类) 【本篇文章我们先深入了解静态代理模式,动态代理下篇文章给大家讲解】
2、动态代理 (动态代理是程序自动帮我们生成一个代理)
五:静态代理(来个代码看看吧)
1、根据上面的实现步骤,首先来写一个抽象角色
1 //租房的接口 (抽象角色) 2 3 public interface Rent { 4 5 void rent(); 6 7 }