- 定义:
动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更具有弹性的替代方案;
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
相关推荐
设计模式 c# 装饰模式
软件设计模式之装饰模式讲解ppt,可用于教学课件。
JAVA设计模式之装饰模式代码
设计模式之装饰模式 Java代码实现;另由本人所写,转载请注明原址。
设计模式之装饰模式的Java实现和类设计图。
23种设计模式之装饰模式对装饰模式进行了简单的介绍,并附带了例子程序,和大家分享
装饰者模式是在不改变原有类和不使用继承的情况下,动态地扩展一个对象的功能,代码中通过对象参数进行选择。
新技术培训 培训讲义11_设计模式之装饰模式.doc 学习资料 复习资料 教学资源
c# ,设计模式,装饰者模式,星巴兹咖啡,基本上就是head first 上的例子的C#实现,根据自己的理解,作了一点点改动,可以直接运行。
C++23种设计模式之 装饰模式。:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需 要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的...
设计模式
根据售卖咖啡的过程,客户先选择一种口味的咖啡,又选择不同种类的配料,由于配料选择是不定的,符合装饰模式的应用情况。
java 23种设计模式 装饰模式,详细源码分析请看博客: http://blog.csdn.net/github_22022001/article/details/41543475
java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式java设计模式之装饰模式
动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。
java设计模式之装饰者模式代码