就是用来装饰别的类的,可以理解成 加油添醋(或锦上添花····)

    就像人一样,人就是原来的类,每一个装饰类就如一件件的衣服,可以根据需求随意组合的穿到人的身上。

    例子:

          面条,可以是牛肉面瘦肉面、·····等等,

          转换成java代码就是:

              面条 --- 抽象类 Noodle;

             牛肉面 ----  BeefNoodles;

             瘦肉面  ---- MeatNoodles;    

     ```````````这样就会有各种各样的面条的具体类了,

     关键不是数量的问题,假如有一个 加鸡蛋的牛肉面呢? 再新建一个 BeefAndEggNoodles?    

     那么,如果顾客的要求更多一点呢 加蛋加香肠的牛肉面呢·······················    

  

     应该怎么办呢,其实我们应该分清楚主次,很明显这里主体是牛肉面/瘦肉面,装饰的是配料(什么鸡蛋,香肠,香菜等·····),

     而且这些配料还有可能随意组合的,所以按配料来定义一个面条对象是不理智的。

    首先,先创建一个Noodle抽象类,这个没问题吧:

 1 package design.patterns.decorator;
 2 
 3 public abstract class Noodle {
 4    //描述,说明这是什么面
 5    public String description;
 6    
 7    public String getDescription(){
 8        return description;
 9    }
10    
11    //吃后感
12    public abstract String feeling();
13 }
View Code

相关文章: