我在看孙鑫java视频教程时,遇到这样一个名词,很难理解,大家看看是什么意思!

解决方案 »

  1.   

    设计模式 - 装饰者模式(Decorate )
    动态地给一个对象添加一些额外的职责。就增加功能来说,Decorate 模式相比生成子类更为灵活。  在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。  
    处理那些可以撤消的职责。  
    当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 实质就是 Wrapper. 一层一层的封装。可以封装任意层。
      

  2.   

    装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点;
    (1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
    (2) 装饰对象包含一个真实对象的索引(reference)
    (3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
    (4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
      

  3.   

    更多情况下
    楼主可以问一下baidu
      

  4.   

    在 IO 包中用到了大量的装饰器模式,所以我们就可以这样用:BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));也就是一层一层地添加些功能,节省点类。我们就不用写 BufferedInputStreamReader 这种类了。如果这样做的话,每种样子都来一个,
    类会多得吃不消的,呵呵。
      

  5.   

    问百度也不可能很清楚,最好是找本设计模式的书,并且Decorate设计模式并非java的。推荐书籍:GOF 《设计模式》
              《设计模式解析》
               《大话设计模式》     ----这个是中国人的,评价还可以
                《Thinking in patterns》
                 《java与模式》想很快的了解可以去下载23个设计模式的电子书,还附示例代码,迅雷搜狗有。
      

  6.   

    首先谢谢给位哦,这是我的理解,大家看对不对!
    class AA
    {
      private BB bb;
      public AA(BB bb)
      {
       this.bb = bb;   
      }
    }class BB
    {
      private CC  cc;
      public BB(CC cc)
      {
        this.cc = cc;
      }
    }class CC
    {
       ...
    }
    public class DD
    {
       public static void main(String[] args)
       {
         AA aa = new AA(new BB(new cc));   //这里是不是算得上装饰模式!
       }
    }
      

  7.   

    呀~我就是看了BufferedInputStream有了疑问才来找答案的,呵呵!关于装饰模式虽然还不太清楚但是看了就顶一下!