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();
}
}
装饰模式 通俗的讲,也就是将一个对象装饰以后还是这个对象.它只是起到了一个装饰的作用,起到了一个修饰的作用,使物品更加实用,好看,美观,等,就象房子,在开发商盖好以后照样能住人,但为什么好多人都要进行装饰一下才住呢?下面举个小例子.哈哈!
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();
}
}