`
snake_hand
  • 浏览: 577132 次
社区版块
存档分类
最新评论

设计模式之装饰模式;

 
阅读更多
  1.  定义:

      动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更具有弹性的替代方案;

      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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics