正确使用装饰图案

时间:2012-08-25 13:14:17

标签: oop design-patterns decorator

我正在尝试学习装饰设计模式。

我有一个很好用的场景,并且学习编码如下:

命令行输出程序。装饰器将包装一个outputText类,并为输出添加其他功能,如文本颜色,粗体文本,闪烁文本等。

这会被认为是对这种模式的好用还是我错过了它的意思?

2 个答案:

答案 0 :(得分:3)

我认为你的想法很合理。它与GoF book中提供的文本编辑器示例非常相似。

在那本书中,他们使用文本编辑器的例子,用于绘制窗口的类,粗体文本等。他们在一章中使用了装饰模式的例子来模仿你描述的内容,所以我会说你是在正确的轨道上。

所以更进一步,你会有一个用于斜体文本的装饰器类,另一个用于粗体文本等等。好的,有人可能会说你可以有一个类为你做这个,例如TextFormatter,但您只需要使用适合您情况的内容。

答案 1 :(得分:2)

装饰器模式允许通过使用委托而不是继承来添加功能(结构和行为)。你的例子正是它的一个很好的应用。好处是基于这样一个事实,即您可以拥有一个类的许多不同的装饰器,而无需创建继承关系的意大利面条图。

此维基百科页面提供了有关此模式的更多信息

http://en.wikipedia.org/wiki/Decorator_pattern

相关问题