首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么装饰者设计模式的名字是“装饰者”?

为什么装饰者设计模式的名字是“装饰者”?
EN

Stack Overflow用户
提问于 2009-01-05 19:43:54
回答 4查看 1.3K关注 0票数 2

有人能解释一下为什么选择" Decorator“这个名字来实现Decorator设计模式所传达的功能吗?

我一直觉得这个名字很容易让人误解,因为装饰器和标记接口听起来和我的目的非常相似。然而,虽然标记并不是真正的“做任何事情”,但装饰者肯定会做。但对我来说,修饰这个术语意味着被动,而用来添加功能的模式并不是这样的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-05 19:49:09

我相信这个术语的起源来自于用不同的组件来装饰用户界面的例子,例如,滚动条,关闭按钮等。

编辑:参考页面308,作者是Steven John Metsker的“C#中的设计模式”:

图形用户界面组件的构造是

装饰器最初的应用程序之一(大概也是装饰器由此得名的应用程序)。

票数 7
EN

Stack Overflow用户

发布于 2009-01-05 19:53:49

我认为类比是,当你装饰一座房子时,你并不是真的打破了任何墙壁或诸如此类的东西,你只是在周围放了一些东西(想放多少就放多少),改变了它的外观(以及它的功能)。我认为选择这个词是为了暗示非侵入性,以及一些可选的东西。

票数 3
EN

Stack Overflow用户

发布于 2009-01-05 19:48:44

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/414251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档