为什么装饰师设计模式的名称为“Decorator”?

时间:2009-01-05 19:43:54

标签: design-patterns terminology decorator

任何人都可以解释为什么选择名称“Decorator”用于Decorator设计模式所传达的功能吗?

我总是发现这个名字相当误导,因为装饰师和标记界面听起来与我的目的非常相似。然而,虽然标记并没有真正“做任何事情”,但装饰者肯定会这样做。但是对我来说装饰一词意味着被动性,这种用于添加功能的模式并非如此。

4 个答案:

答案 0 :(得分:7)

我认为该术语的来源来自使用不同组件装饰用户界面的示例,例如,滚动条,关闭按钮等。

编辑:参考Steven John Metsker撰写的“C#中的设计模式”中的第308页:

  

DECORATOR的原始应用程序之一(可能是DECORATOR派生名称的应用程序)在于构建GUI组件。

答案 1 :(得分:3)

我认为类比是当你装饰一个房子时,你并没有真正打破任何墙壁或任何类似的东西,你只需要改变一些东西(尽可能多的东西),改变它的外观(和它的功能)。我认为这个词的选择意味着非侵入性,也是一种可选的。

答案 2 :(得分:2)

装饰器通过向现有方法添加额外功能来“装饰”接口,但实际上不添加任何自己的方法。装饰对基本功能不是必不可少的;否则它将被内置到基类中。

答案 3 :(得分:0)

因为您要向现有对象添加新功能。实质上,您正在使用新功能“装饰”对象。

嘿,留给极客来弥补名字。