有人能解释一下为什么选择" Decorator“这个名字来实现Decorator设计模式所传达的功能吗?
我一直觉得这个名字很容易让人误解,因为装饰器和标记接口听起来和我的目的非常相似。然而,虽然标记并不是真正的“做任何事情”,但装饰者肯定会做。但对我来说,修饰这个术语意味着被动,而用来添加功能的模式并不是这样的。
发布于 2009-01-05 19:49:09
我相信这个术语的起源来自于用不同的组件来装饰用户界面的例子,例如,滚动条,关闭按钮等。
编辑:参考页面308,作者是Steven John Metsker的“C#中的设计模式”:
图形用户界面组件的构造是
装饰器最初的应用程序之一(大概也是装饰器由此得名的应用程序)。
发布于 2009-01-05 19:53:49
我认为类比是,当你装饰一座房子时,你并不是真的打破了任何墙壁或诸如此类的东西,你只是在周围放了一些东西(想放多少就放多少),改变了它的外观(以及它的功能)。我认为选择这个词是为了暗示非侵入性,以及一些可选的东西。
发布于 2009-01-05 19:48:44
装饰器通过向现有方法添加额外的功能来“装饰”接口,但实际上并不添加任何自己的功能。装饰对于基本功能来说不是必需的;否则它将被构建到基类中。
https://stackoverflow.com/questions/414251
复制相似问题