首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式-装饰器

2012-09-20 
设计模式------装饰器装饰模式和代理模式的区别: 其实在写法上面试一样的但是装饰器模式是为程序添加新的

设计模式------装饰器

装饰模式和代理模式的区别: 其实在写法上面试一样的
但是装饰器模式是为程序添加新的功能,而代理模式是为了是否调用那个主功能把关的。


//装饰模式动态地给一个对象添加一些额外的职责,既然只是装饰,比如一头猪,它打扮得再漂亮也是一头猪,并不能成为一个人,而装饰他的东西呢,如果一个东西要装饰他,比如给猪穿衣服,那么要点1:让他还是一头猪,所以把它包装后对外的接口还是一样的。要点2:是他变成一头美丽的猪,在包装的内部增强他的功能//装饰与代理不一样,代理可以伪装一个对象,目的是使得别人看他看起来简单,而装饰是增强一个对象,让别人看他看起来功能变多了(提供吸引女孩的功能---给猪穿好看的衣服)语义:使得对象组合在一起,随意组合,防止类爆炸,因为为了可以任意组合,那么他们都得是同一种东西,如果不同可能要写很多构造函数。。。用head first 的话是: 不改变接口,但加入职责//Beverage  ----> 饮料public abstract class Beverage{ String description = "Unknown Beverage";  public String getDescription(){   return description; } public abstract double cost();}//CondimentDecorator --->调料装饰器public abstract class CondimentDecorator extends Beverage{       public abstract String getDescription(); //强迫其他原料类重写他}public class Mocha extends CondimentDecorator {    Beverage beverage;    public Mocha(Beverage beverage){         this.beverage = beverage;    }   public String getDescription(){        return beverage.getDescription()+", Mocha";   }   public double cost(){       return .20 + beverage.cost();   }}java中的装饰器:InputStreamFileImputStream  StringBufferInputStream  ByteArrayInputStream FilterInputStream......装饰者模式的缺点。。。。小类太多,可能会造成使用此API的程序员的困扰

热点排行