设计模式之装饰模式;
- 定义:
动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更具有弹性的替代方案;
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
浙公网安备 33010602011771号