`

装饰模式与代理模式

 
阅读更多

装饰模式:

定义:装饰模式以对客户端透明的方式动态扩展对象的功能(附加新的职责),是继承关系的一个替代方案。

角色:

  1)抽象构件角色(Component ):给出一个抽象接口,以规范接收附加责任的对象。

  2)具体构件角色(ConcreteComponent ):定义一个将要接受附加责任的类

  3)装饰角色(Decorator ):持有一个构件对象的实例,并定义一个与抽象构件一致的接口。

  4)具体装饰角色(ConcreteDecorator ):负责给构件对象贴上附加的责任。

特别注意:即装饰者和被装饰者具有相同的接口,这和代理模式很相似。

图:



 

 

意图:

把类中的装饰功能从类中移除,可以简化原有的类。

把类中的核心职责和装饰功能区分开来,而且可以去除相关类中重复的装饰逻辑。

动态添加对象到某个对象上。

缺点:

会导致比继承更多的对象,差错变得更加困难。

 

 

代理模式:

定义:为其他对象提供一种代理以控制对这个对象的访问。

角色:

1) 真实主题(ReadSubject):客户端实际要操作的对象。

  2) 代理(Proxy):代理中含有对真实主题(RealSubject) 的一个引用,可以对真实主题进行操作。

  3) 抽象主题(Subject):定义了真实主题和代理的共同操作的接口,这样在任何可以操作真实主题的地方也就可以操作代理。

图:



 

意图:

代理模式有效的向客户端屏蔽了附加行为细节,降低了客户端和系统之间的耦合度。

 

要点:

动态代理:

u     不用手工编写代理类;而是在运行时候动态生成;作用和手工生成的代理对象一致。

u     实现同一个接口:

u     创建java.lang.reflect.InvocationHandler,每个代理实例都有一个与它对应的InvocationHandler实例,就是一个方法拦截器。用以控制对某个对象的访问的拦截。

u     创建动态代理对象的步骤:

1)      指明一系列的接口来创建一个代理对象

2)      创建一个调用处理器Invocation handler 对象

3)      将这个代理指定为某个其他对象的代理对象

4)      在调用处理器的invoke()方法中采取代理,一方面将调用传递给真实对象,另一方面执行各种需要做的操作。

智能引用:

Java虚拟机对内存的管理能力是有限的,但有些应用又出于效率的考虑需要将一些较大的对象装载到内存中,为了保证虚拟机不会出现内存溢出,采用软引用,虚拟机在内存不够的时候能够回收较大的对象。采用智能引用能够保证一旦较大对象被回收后能够重新创建大对象保证客户端的正常使用。

  • 大小: 20.7 KB
  • 大小: 32 KB
分享到:
评论

相关推荐

    java装饰模式及动态代理模式示例源码

    java中的装饰模式及动态代理模式示例源码,并且手写数据库连接池,以及展示动态代理模式在连接池中的使用

    适配器模式,装饰模式和代理模式1

    适配器模式,装饰模式和代理模式1

    java静态代理、动态代理、装饰设计模式

    NULL 博文链接:https://871656094.iteye.com/blog/2355335

    Ruby使用设计模式中的代理模式与装饰模式的代码实例共3页

    Ruby使用设计模式中的代理模式与装饰模式的代码实例共3页.pdf.zip

    面向对象23种设计模式之代理模式

    面向对象23种设计模式之代理模式,简单明了。面向对象23种设计模式之代理模式,简单明了。

    Python实现适配器模式、装饰器模式、代理模式.md

    Python实现适配器模式、装饰器模式、代理模式

    装饰器设计模式

    控制访问,装饰器设计的四个名词,装饰器模式与代理模式的区别,

    23种设计模式 -设计模式图解.7z

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    设计模式-C++

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    Java设计模式:静态代理、装饰者、动态代理详解

    静态代理、装饰者、动态代理1. 静态代理设计模式1.1 ...代理模式是Java常见的设计模式之一。 代理模式是指不直接调用实际对象,而是通过调用代理,来间接的调用实际的对象。 为什么要采用这种间接的形式来调用对象呢?

    java 23种设计模式.zip

    2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略...

    23种设计模式项目实例

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...

    java常用23中设计模式

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    Java 经典设计模式讲解以及项目实战

    8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework...

    设计模式之代理

    JAVA设计模式之代理模式、装饰模式等。

    01.装饰者设计模式和动态代理设计模式.wmv

    01.装饰者设计模式和动态代理设计模式.wmv

    23种JAVA设计模式和15种J2EE设计模式

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    java设计模式示例

    结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...

    java设计模式

    31.1 代理模式VS装饰模式 31.1.1 代理模式 31.1.2 装饰模式 31.1.3 最佳实践 31.2 装饰模式VS适配器模式 31.2.1 按装饰模式描述丑小鸭 31.2.2 按适配器模式实现丑小鸭 31.2.3 最佳实践 第32章 行为类模式大PK 32.1 ...

Global site tag (gtag.js) - Google Analytics