深入理解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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值