从功能效果上看
装饰模式:在不改变接口的前提下,动态扩展对象的功能
代理模式:在不改变接口的前提下,控制对象的访问
装饰模式强调功能扩展,比如A对象的B方法,运用装饰模式后,在调用B方法前后,实现新的功能,此时B方法效果与原来不同
代理模式强调控制访问,如上例,运用代理模式后,在调用B方法前后,控制怎么访问B方法的原始数据,而对于B实现的功能效果不做修改
因此,如果运用设计模式后,方法的功能效果(主要是输出效果)不变,一般可视为代理。
从类结构上看
通过装饰模式结构图中可以看出

Component类在Decorator模式中充当抽象接口的角色,不应该去实现具体的行为。而且Decorator类对于Component类应该透明,换言之Component类无需知道Decorator类,Decorator类是从外部来扩展Component类的功能。
Decorator类在接口上表现为is-a Component的继承关系,即Decorator类继承了Component类所具有的接口。但在实现上又表现为has-a Component的组合关系
Decorator模式在实际中的运用可以很灵活。如果只有一个ConcreteComponent类而没有抽象的Component类,那么Decorator类可以是ConcreteComponent的一个子类。
同样,通过代理模式结构图中可以得出

代理类和被代理对象是has-a关系,一般没有is-a关系,除非代理类直接继承被代理类,重写被代理类的方法,即上图中没有抽象Subject类时的情况。
分享到:
相关推荐
适配器模式、装饰模式和代理模式 本文将详细介绍适配器模式、装饰模式和代理模式的概念、特点和应用场景,并通过实际的例子来阐述这三种模式的差异和相同点。 一、适配器模式 适配器模式是一种结构型设计模式,它...
装饰模式和动态代理模式是Java编程中两种非常重要的设计模式,它们都在代码的扩展性和灵活性方面发挥着关键作用。下面将分别对这两种模式进行详细解释,并结合手写的数据库连接池和动态代理模式的使用进行深入探讨。...
在Java编程中,代理模式是一种常见的设计模式,它允许我们为一个对象提供一个代理以控制对这个对象的访问。代理模式通常用于增加额外的功能或在访问原对象时进行额外的操作,比如日志记录、安全控制、性能统计等。...
* 代理模式:代理模式和装饰器模式类似,但是代理模式更关心的是控制原有对象的访问,而不是添加新的行为或功能。 * 适配器模式:适配器模式是用于解决不兼容的问题,而不是添加新的行为或功能。 * 模板方法模式:...
设计模式学习笔记,桥接模式装饰模式代理模式享元模式组合模式命令模式模版方法模式
【Java】《大话设计模式》java版实现。包括简单工厂模式,策略模式,装饰模式,代理模式,工厂方法模式,原型模式,模板方法模式等
代理模式是面向对象设计模式中的一个关键概念,它在软件工程中扮演着重要角色,用于在客户端和目标对象之间创建一种代理关系,以提供额外的功能或控制。在代理模式中,代理类作为真实对象的代表,它可以在客户端与...
本资料主要探讨的是代理模式(Proxy Pattern)和装饰模式(Decorator Pattern)在Ruby中的实现,通过具体的代码实例,帮助开发者理解和运用这两种模式。 **代理模式**是一种结构型设计模式,它创建了一个拥有与目标...
6.1 代理模式 vs 装饰器模式 示例对比: 6.2 代理模式 vs 适配器模式 示例对比: 6.3 代理模式 vs 中介者模式 7. 代理模式的实际应用场景 7.1 远程代理(Remote Proxy) 7.2 虚拟代理(Virtual Proxy) 7.3 保护代理...
7.1 装饰器模式 vs 代理模式 7.2 装饰器模式 vs 适配器模式 7.3 装饰器模式 vs 组合模式 7.4 装饰器模式 vs 策略模式 8. 装饰器模式的现实应用场景 8.1 Web应用中的请求处理 8.1.1 HTTP请求处理器示例 8.2 数据源...
装饰者模式与代理模式有一定的相似性,但两者有明显的区别。装饰者关注于增强对象的行为,而代理则更侧重于控制访问,如权限控制、远程代理等。 为了更好地理解装饰者模式,可以参考提供的PDF文件。"装饰者模式-...
在本文中,我们将深入探讨标题提及的23种设计模式,并着重讨论桥接模式与适配器模式、装饰模式与代理模式、状态模式与策略模式,以及工厂模式之间的差异。 1. **桥接模式与适配器模式**: - **桥接模式**:将抽象...
【Java】《大话设计模式》java版实现。包括简单工厂模式,策略模式,装饰模式,代理模式,工厂方法模式,原型模式,模板方法模式等_pgj
Python实现适配器模式、装饰器模式、代理模式
#### 五、代理模式与装饰模式的区别 虽然代理模式和装饰模式都涉及到对象的包装,但它们的侧重点不同: - **代理模式**关注的是控制对一个对象的访问,而不仅仅是增加功能。 - **装饰模式**更注重于在不改变对象...
代理模式是一种设计模式,它在软件工程中扮演着重要的角色,允许我们为其他对象提供一个替代品或代理,以控制对这...通过理解和熟练运用代理模式,开发者能够更好地应对各种复杂的软件需求,提高软件设计的质量和效率。
代理模式、桥接模式、装饰器模式和适配器模式虽然在代码结构上有些相似,但它们的核心目的和应用场景不同: - **代理模式**:为对象提供一个代理以控制对该对象的访问,如远程代理、虚拟代理、缓存代理等。 - **...
4. **代理模式与其他模式的结合**:代理模式常常和其他设计模式一起使用,例如装饰器模式,它们之间的区别和联系会有所讲解。 5. **代理模式的优缺点**:讨论代理模式的优点,如增加灵活性、解耦等,同时也会提到其...
01.装饰者设计模式和动态代理设计模式.wmv
虽然代理模式和装饰者模式在实现上可能有相似之处,但其核心意图和使用场景完全不同。 ### 装饰者模式的应用场景 装饰者模式广泛应用于需要动态添加功能的场景中,如Java I/O系统中的流装饰,可以为基本的输入输出...