当前位置:首页 > 开发 > IT生活 > 正文

Java设计模式之装饰者模式

发表于: 2014-03-11   作者:会飞的拉布拉多   来源:转载   浏览:
摘要:   装饰者模式在我理解就是对象功能的封装和传递的过程。   我们去花店买花送人的时候会首先选哪种花,比如送老婆选的红玫瑰,送妈妈的康乃馨等等,然后包装走人;如果你想送大一点的,那你就得买其他的去搭配,比如101朵玫瑰,外加一些荷兰百合,总之我们会买更多的花(在模式中我们认为有更多的操作)让它能够成为一束花,然后再选那种包装,不论哪种,最终我们得到的是带有包装的一朵花或者一束花
  装饰者模式在我理解就是对象功能的封装和传递的过程。
  我们去花店买花送人的时候会首先选哪种花,比如送老婆选的红玫瑰,送妈妈的康乃馨等等,然后包装走人;如果你想送大一点的,那你就得买其他的去搭配,比如101朵玫瑰,外加一些荷兰百合,总之我们会买更多的花(在模式中我们认为有更多的操作)让它能够成为一束花,然后再选那种包装,不论哪种,最终我们得到的是带有包装的一朵花或者一束花。
  我们把打成花束和包装都叫做装饰,让一朵花经过不断的包装能有不同的表现。
 
  花有很多种,我们定义花的接口:
 
public interface 花{
     public void printCurrentStatus();//这个接口是指这个花在当前时间的状态,是花?                                           //还是花束?还是已经包装好了?
  }


  我们要买的玫瑰或者康乃馨:
 
public class 玫瑰 implements 花{
     public void printCurrentStatus(){
System.out.println("选好一朵玫瑰花")
     }
}



  然后我们进行装饰,第一个装饰就是把花打花束:
 
public class 打成花束 implements 花{
     private 花 object;
     
     public 打成花束(花 object){
        this.object = object;
     }

     public void printCurrentStatus(){
          object.printCurrentStatus();
          System.out.println("打好了花束");
     }
        
  }


   下一个装饰是进行包装:
   
public class 包装 implements 花{
     private 花 object;
     
     public 包装(花 object){
        this.object = object;
     }

     public void printCurrentStatus(){
          object.printCurrentStatus();
          System.out.println("打好了包装");
     }
        
  }

  好了,在回顾一下我们买花的过程吧:
 
public static void main(String[] args){
      花   花object  = new 玫瑰();//选好的玫瑰
      花object = new  包装(花object);//如果我们就买一支,那直接打包吧
      花object.printCurrentStatus();//输出: 选好一朵玫瑰花
                                               打好了包装

      花   花object1  = new 玫瑰();//选好的玫瑰
      花object1 = new 打成花束(花object1);//打成花束
      花object1 = new  包装(花object1);//包装
      花object1.printCurrentStatus();//输出什么呢?大家自己运行吧

  }


  示例可能没有那么贴切,但是要表达的意思是一致的,这样,花最终就得到了装饰后的结果

  

Java设计模式之装饰者模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Java设计模式之装饰者模式 摘要:装饰者模式相对来说是一种比较容易理解的模式。主要有组件(compon
下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043 //////////
下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043 //////////
package 设计模式.装饰器模式; public abstract class Tank { protected String name; public Strin
装饰模式(Deocrator) 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类
这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象
早晨有时候会去附近煎饼店买煎饼,煎饼店有卖咸味煎饼、甜味煎饼、不加甜味也不加咸味的煎饼。在煎饼
1、装饰者模式定义:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方
装饰者模式:装饰顾名思义就在原来的功能基础上加点装饰。 在java api中用到装饰者模式的最典型的就
设计模式分为三大类型,一创建型,二结构型,三行为型. 而装饰者(decorator)模式是属于结构型的一种.
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号