我正在尝试学习装饰设计模式。
我有一个很好用的场景,并且学习编码如下:
命令行输出程序。装饰器将包装一个outputText类,并为输出添加其他功能,如文本颜色,粗体文本,闪烁文本等。
这会被认为是对这种模式的好用还是我错过了它的意思?
答案 0 :(得分:3)
我认为你的想法很合理。它与GoF book中提供的文本编辑器示例非常相似。
在那本书中,他们使用文本编辑器的例子,用于绘制窗口的类,粗体文本等。他们在一章中使用了装饰模式的例子来模仿你描述的内容,所以我会说你是在正确的轨道上。
所以更进一步,你会有一个用于斜体文本的装饰器类,另一个用于粗体文本等等。好的,有人可能会说你可以有一个类为你做这个,例如TextFormatter
,但您只需要使用适合您情况的内容。
答案 1 :(得分:2)
装饰器模式允许通过使用委托而不是继承来添加功能(结构和行为)。你的例子正是它的一个很好的应用。好处是基于这样一个事实,即您可以拥有一个类的许多不同的装饰器,而无需创建继承关系的意大利面条图。
此维基百科页面提供了有关此模式的更多信息