装饰模式在23种设计模式中是哪一种?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1719个文字,预计阅读时间需要7分钟。
前言,装饰模式,英文名称:Decorator Pattern。我第一次看到这个名字时,想到的词是装饰,而不是装饰模式。我说说我对装饰的理解吧,大家一定要看清楚,是装饰,而不是装饰。
前言
装饰模式,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可以相互组合,来增加房子的功用。类似的,如果我们在软件系统中,要给某个类型或者对象增加功能,如果使用“继承”的方案来写代码,就会出现子类暴涨的情况。比如:IMarbleStyle是大理石风格的一个功能,IKeepWarm是保温的一个接口定义,IHouseSecurity是房子安全的一个接口,就三个接口来说,House是我们房子,我们的房子要什么功能就实现什么接口,如果房子要的是复合功能,接口不同的组合就有不同的结果,这样就导致我们子类膨胀严重,如果需要在增加功能,子类会成指数增长。
装饰模式的定义
上述的问题的根源在于我们**“过度地使用了继承来扩展对象的功能”**,由于继承为类型引入的静态特质,所谓静态特质,就是说如果想要某种功能,我们必须在编译的时候就要定义这个类,这也是强类型语言的特点。静态,就是指在编译的时候要确定的东西;动态,是指运行时确定的东西。
本文共计1719个文字,预计阅读时间需要7分钟。
前言,装饰模式,英文名称:Decorator Pattern。我第一次看到这个名字时,想到的词是装饰,而不是装饰模式。我说说我对装饰的理解吧,大家一定要看清楚,是装饰,而不是装饰。
前言
装饰模式,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可以相互组合,来增加房子的功用。类似的,如果我们在软件系统中,要给某个类型或者对象增加功能,如果使用“继承”的方案来写代码,就会出现子类暴涨的情况。比如:IMarbleStyle是大理石风格的一个功能,IKeepWarm是保温的一个接口定义,IHouseSecurity是房子安全的一个接口,就三个接口来说,House是我们房子,我们的房子要什么功能就实现什么接口,如果房子要的是复合功能,接口不同的组合就有不同的结果,这样就导致我们子类膨胀严重,如果需要在增加功能,子类会成指数增长。
装饰模式的定义
上述的问题的根源在于我们**“过度地使用了继承来扩展对象的功能”**,由于继承为类型引入的静态特质,所谓静态特质,就是说如果想要某种功能,我们必须在编译的时候就要定义这个类,这也是强类型语言的特点。静态,就是指在编译的时候要确定的东西;动态,是指运行时确定的东西。

