【发布时间】:2020-01-05 16:13:40
【问题描述】:
我一直在阅读有关装饰器模式的文章。对我来说,装饰器类是抽象的是有道理的,因为我不明白为什么它应该在任何情况下由它自己实例化,但是我实际上还没有找到任何地方说明它无论如何都必须是抽象的。
总是抽象的对吗?
【问题讨论】:
-
装饰器的语义因语言而异,因此您应该指出您要询问的语言。
-
我不确定抽象装饰器会有什么用处。您需要一个具体的装饰器类才能创建一个。否则,你怎么可能装饰任何东西?装饰器是否扩展抽象类是无关紧要的实现细节。
-
可能是我写错了。我的意思是装饰器本身。是否应该实例化为抽象类?
-
见en.wikipedia.org/wiki/… 的例子。有两个装饰器:WithMilk 和 WithSprinkles。它们都是具体的类。如果它们是抽象类,它们将无法使用。我不知道“实例化为抽象类”是什么意思。举一个具体的例子来解释你的意思。
-
在我的链接中,WindowDecorator 是两个具体装饰器 HorizontalScrollbarDecorator 和 VerticalScrollbarDecorator 的抽象基类。正如我在之前的评论中所说的那样,这是一个实现细节:这两个具体的装饰器是否扩展了一个抽象类并不会改变它们的作用以及您使用它们的方式。
标签: java design-patterns decorator