【发布时间】:2018-04-10 05:32:37
【问题描述】:
对于学校报告,我必须解释 java.io.Reader 包如何实现Decorator pattern。我已经看到了对 java.io 包的多种解释(例如here),但没有看到 java.io.Reader 包的解释(如果这甚至有任何不同的话)。这是我现在所拥有的,我知道这个设计没有正确显示它,但我不确定 java.io.Reader 包实际上是如何实现它的。
所以在这种情况下,Reader 将是 Component、InputStreamReader、Concrete Component、BufferedReader、Decorator 和 LineNumberReaderConcrete Decorator。同样,我知道这是错误的,但我不知道如何正确显示它。
【问题讨论】:
-
大小写正确;您可以将
<<decorator>>添加到 BufferedReader。就我个人而言,我不会真正将其称为装饰器模式的示例。赞成的观点:BufferedReader 包装了另一个 Reader。即使它不是一个接口,它也有 LineNumberReader 来制作类似的图表。您可能会争辩说,委托给与构造函数参数相同的接口 "decorates". -
添加 LineNumberReader 有点牵强,只是为了有一个类似的图表。