- 定义:
动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更具有弹性的替代方案;
2.类图:
抽象组件;(装饰者和被装饰者的共同接口)
1 /** 2 * @author Mopa 3 * @version 1.0 4 * @created 17-三月-2013 1:52:07 5 */ 6 public abstract class Component { 7 8 public Component(){ 9 10 } 11 12 public abstract void methodA(); 13 14 public abstract void methodB(); 15 16 }
具体组件:(被装饰者)
1 public class ConcreteComponent extends Component { 2 3 public ConcreteComponent(){ 4 5 } 6 7 public void methodA(){ 8 9 } 10 11 public void methodB(){ 12 13 } 14 15 }
抽象装饰者:
1 /** 2 * @author Mopa 3 * @version 1.0 4 * @created 17-三月-2013 1:56:36 5 */ 6 public abstract class Decorator extends Component { 7 8 private Component component; 9 10 public Decorator(Component component){ 11 this.component=component; 12 } 13 14 15 public void methodA(){ 16 component.methodA(); 17 } 18 19 public void methodB(){ 20 componet.methodB(); 21 } 22 23 }
具体装饰者A
1 /** 2 * @author Mopa 3 * @version 1.0 4 * @created 17-三月-2013 1:58:51 5 */ 6 public class ConcreteDecoratorA extends Decorator { 7 8 public ConcreteDecoratorA(){ 9 10 } 11 12 public void addBehavior(){ 13 14 } 15 16 public void methodA(){ 17 super.methodA(); 18 } 19 20 public void methodB(){ 21 super.methodB(); 22 } 23 24 }
具体装饰者B
/** * @author Mopa * @version 1.0 * @created 17-三月-2013 1:59:55 */ public class ConcreteDecoratorB extends Decorator { public ConcreteDecoratorB(){ } public void addState(){ } public void methodA(){ super.methodB(); } public void methodB(){ super.methodB(); } }
相关书籍和参考文章:
<Head first 设计模式>,<研广设计模式>
UML类图与类的关系详解
http://www.uml.org.cn/oobject/201104212.asp
《模式》试读:第12章 装饰模式
http://book.douban.com/reading/17723665/
设计模式笔记 – Decorator 装饰模式 (Design Pattern) 及其在JavaIO流系统中的运用
http://www.itzhai.com/design-pattern-notes-decorator-decorator-design-pattern-and-its-javaio-flow-system-using.html
Android源码学习之装饰模式应用
http://www.cnblogs.com/yemeishu/archive/2012/12/30/2839489.html
Android学习CursorWrapper与Decorator模式
http://www.cnblogs.com/bastard/archive/2012/05/31/2527944.html
【原创】装饰模式Decorator
http://www.blogjava.net/zpuser/archive/2006/12/24/89742.html
相关推荐
在给定的标题“设计模式之装饰模式”中,我们可以深入探讨以下几个方面: 1. **装饰模式的基本结构**:装饰模式通常包括四个角色:抽象组件(Component)接口,具体组件(Concrete Component)类,抽象装饰...
装饰模式是一种结构型设计模式,它允许在运行时给对象添加新的行为或责任,而无需修改对象的源代码。在Java中,装饰模式通常通过继承和组合来实现,提供了比子类化更灵活的方式来扩展对象的功能。 装饰模式的核心...
软件设计模式之装饰模式讲解ppt,可用于教学课件。
在"设计模式之装饰模式:以售卖咖啡为例"的场景中,我们可以详细解析其应用。 首先,咖啡的选择过程可以看作是基础产品(Component),例如原味咖啡。客户可以选择的基础咖啡类型可能包括拿铁、卡布奇诺等,这些都...
设计模式之装饰模式 装饰模式(Decorator Pattern)是一种结构型设计模式,用于动态地给一个对象添加一些额外的职责。该模式允许在不修改原有对象的情况下,动态地改变对象的行为。 定义与结构 装饰模式由四个...
标题中的"设计模式之装饰模式 Java代码实现"意味着我们将探讨如何用Java语言来实现装饰模式。这通常包括以下几个步骤: 1. **定义组件接口**:首先,我们需要一个接口或者抽象类(Component),它定义了对象的基本...
标题中的“设计模式之装饰模式Java实现”指的是使用Java语言来实现装饰模式。装饰模式的核心思想是通过将对象包装在一个装饰类中,动态地给对象增加新的功能,而不是通过改变原有类的代码。这样可以保持原类的简洁性...
总的来说,装饰者模式是一种强大的设计模式,它提供了一种在运行时动态调整对象行为的方法,使得代码更具灵活性和可扩展性。通过理解和熟练运用装饰者模式,我们可以更好地应对软件需求的变化,提高代码的可维护性和...
装饰模式(Decorator Pattern)是一种结构型设计模式,它在不改变原有对象的基础上,通过包裹一个对象并为其添加新的行为或责任,实现对对象功能的扩展。这种模式在软件开发中非常常见,尤其当需要在运行时动态改变...
装饰者模式是面向对象设计模式中的一个重要概念,它在C#等编程语言中广泛应用。这个例子以星巴克咖啡为例,展示了如何使用装饰者模式来灵活地扩展对象的功能,而无需修改原有代码。 装饰者模式的核心思想是动态地将...
装饰模式(Decorator Pattern)是Java设计模式中的一种结构型模式,它允许在运行时动态地向对象添加新的行为或职责,而不会破坏封装性。这种模式可以用来将多个功能组合在一起,同时保持类的可扩展性和灵活性。在...
C++23种设计模式之 装饰模式。:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需 要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的...
装饰模式(Decorator Pattern)是一种结构型设计模式,允许在不改变对象接口的情况下,动态地为对象添加额外的职责或功能。装饰模式通常用于需要扩展对象功能而又不希望使用子类化的场景。 装饰模式的组成 组件接口...
装饰模式是一种结构型设计模式,它的主要目的是在不修改原有对象的基础上动态地为对象增加新的功能。这种模式常用于在运行时为对象添加新的行为,而不是通过继承来扩展类的功能。在装饰模式中,通常包括抽象组件...
Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...
装饰模式是一种设计模式,主要目的是在不改变原有对象的基础上,动态地给对象添加新的功能,它是继承的一个替代选择。装饰模式的核心在于其扩展性,它允许我们为对象添加额外的职责,而不会影响到其他对象或者原有的...