代理模式(Proxy Pattern)_java24种设计模式02_架构师之路第一章

一、代理模式的定义

1、什么是代理模式?
代理模式代理模式又叫委托模式,是为某个对象(即被代理对象)提供一个代理对象,并且由代理对象控制对原对象(即被代理对象)的访问。特征是被代理类和代理类实现共同的接口且代理类持有被代理类的引用。通俗的来讲代理模式就是我们生活中常见的中介比如房屋中介、劳务中介、婚姻介绍所等等。

2、代理模式中的角色:
抽象主题角色(Subject):声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。
具体主题角色(RealSubject):也称为委托角色或者被代理角色。定义了代理对象所代表的目标对象。
代理主题角色(Proxy):也叫委托类、代理类。代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象;代理对象提供一个与目标对象相同的接口,以便可以在任何时候替代目标对象。代理对象通常在客户端调用传递给目标对象之前或之后,执行某个操作,而不是单纯地将调用传递给目标对象。

3、代理模式的分类
代理模式又分为静态代理和动态代理。静态代理是由程序猿创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理是在程序运行时,通过运用反射机制动态的创建而成。

二、代理模式的应用场景

三、代理模式的类图UML

 代理模式通用类图如下所示:
代理模式(Proxy Pattern)_java24种设计模式02_架构师之路第一章

四、代理模式demo示例

1、案例一

 比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上是这样的:
先定义一种类型的女人:这种类型的女人的共同特征(1)都会抛媚眼勾搭人(2)都会让男人快乐。其中拍金莲有上述两个特征,王婆也是那种女人只不过老了不行了,王婆年轻的时候也是很懂的,所以深知潘金莲能做什么有什么特征。

首先根据上述我们画出类图:

代理模式(Proxy Pattern)_java24种设计模式02_架构师之路第一章

根据类图编写响应的接口及类

五、代理模式的优缺点