深入理解decorate模式

decorate(装饰)
装饰模式 通俗的讲,也就是将一个对象装饰以后还是这个对象.它只是起到了一个装饰的作用,起到了一个修饰的作用,使物品更加实用,好看,美观,等,就象房子,在开发商盖好以后照样能住人,但为什么好多人都要进行装饰一下才住呢?下面举个小例子.哈哈!
  eg: MM没打扮以前是MM,在打扮以后就可能是漂亮的MM,当然打扮可以分为好多种,可以是喜欢抹粉的MM,喜欢带手饰的MM,喜欢抹口红的MM等等.但它最终还只是一个对象,还是一个MM.这就是我的理解,当然现实中的好多东西都可以看成需要装饰的东西,比如普通的桌子,房子,杯子等等一切所有的物质性东西,都可以看成是一个对象.但它们被特殊的装饰以后可能会大变样,让你简直不敢相信,它居然是一个MM,或一张桌子,一个杯子,等等.

public interface MM(){  
    public String dressUp();  


public class fenMM implements MM(){  
  public String  dressUp(){  
     return "抹粉的MM" ;  
  }  
}
public class mouthMM implements MM(){  
  public String  dressUp(){  
     return "抹口红的MM" ;  
  }  
}
当然用户可能只能不只一种打扮,所以后面它会利用装饰模式去进行再进一步的打扮.

public interface OtherDecoator implements MM{
 
}

public class 带饰品的MM implements OtherDecoator(){  
    private MM mm;  
    //为调用原来计划需要执行的任务做准备  
    public 带饰品的MM(MM mm){  
        this.mm= mm;  
    }  
     public String dressUp(){  
    
      return   mm.dressUp() +"带饰品的MM";
    }  

public class 带饰品的1MM implements OtherDecoator(){  
    private MM mm;  
    //为调用原来计划需要执行的任务做准备  
    public 带饰品的MM(MM mm){  
        this.mm= mm;  
    }  
     public String dressUp(){  
      return   mm.dressUp() +"带饰品的MM";
    }  



public class TestDecorator{  
    public static void main(String[] args){  
        MM  mm= new fenMM();    //只抹粉的姑娘.这个姑娘不满足现状
        mm= new 带饰品的MM(mm);  
        mm= new 带饰品1的MM(mm);  
        mm.dressUp();  
    }  





你可能感兴趣的:(Decorator)