设计模式学习篇-proxy代码模式

代理模式:给某个对象提供一个代理对象,并由代理对象控制对原对象的引用。

本质:就是控制对象。

原理:

    代理主题和真实主题实现相同的接口,使得任何使用真实主题的地方都可以使用代理主题,代理主题内部含有对真实主题的引用,在将调用传递给真实主题之前或之后执行一些额外的操作,达到控制真实主题的目的。

特征:

    抽象主题角色(Subject):声明了真实主题和代理主题的共同接口。这样使得任何使用真实主题的地方都可以使用代理主题。

    代理主题角色(proxy):代理主题内部含有对真实主题的引用,通常在将调用传递给真实主题之前或之后执行一些额外的操作,控制对真实主题的引用。

    真实主题角色(RealSubject):代理角色所代表的真实角色。
5.说明:

    代理主题角色可能不知道真实主题角色的存在,而仅仅持有一个被代理主题角色的接口,这时代理主题不能创建被代理主题对象,真实主题角色由系统的其它角色创建并传入。增加了灵活性。

实现上分成:静态代理以及动态代理(jdk 自带的动态代理以及cglib方式)

=========================================================

装饰器模式:能动态的新增或组合对象的行为。
代理模式:为其他对象提供一种代理以控制对这个对象的访问.
装饰模式是“新增行为”,而代理模式是“控制访问”。

类图如下:

猜你喜欢

转载自mojianpo.iteye.com/blog/1135367