我正在尝试学习装饰器设计模式。
我有一个很好的使用和学习编码的场景,如下所示:
一种命令行输出程序。装饰器将包装一个outputText类,并为输出添加额外的功能,如文本颜色、粗体文本、闪烁文本等。
这会被认为是对此模式的一种很好的使用吗?还是我错过了它的要点?
发布于 2012-08-25 21:22:16
我认为你的想法很好。它与GoF book中给出的文本编辑器示例非常相似。
在那本书中,他们使用了文本编辑器的例子,带有绘制窗口,加粗的文本等类。他们在一章中使用了模仿你描述的装饰器模式的例子,所以我想说你是在正确的轨道上。
因此,进一步来说,你应该有一个用于斜体文本的装饰器类,另一个用于加粗文本的装饰器类,等等。好的,有人可能会说你可以有一个类来为你做这件事,比如TextFormatter,但你只需要使用适合你的情况。
发布于 2012-08-25 21:23:42
装饰器模式允许通过使用委托而不是继承来添加特性(结构和行为)。你的例子就是它的一个很好的应用。好处基于这样一个事实,即您可以拥有一个类的许多不同的装饰器,而不必创建继承关系的意大利面条图。
wikipedia页面提供了有关此模式的更多信息
http://en.wikipedia.org/wiki/Decorator_pattern
https://stackoverflow.com/questions/12122282
复制相似问题