我需要为一份学校报告解释java.io.Reader包如何实现装饰者模式。我已经看过多个关于java.io包的解释(例如这里),但是没有关于java.io.Reader包的(如果有区别的话)。这是我目前的内容,我知道这个设计并没有正确展示它,但我不确定java.io.Reader包实际上是如何实现的。
在这种情况下,Reader
是 Component
,InputStreamReader
是 Concrete Component
,BufferedReader
是 Decorator
,LineNumberReader
是 Concrete Decorator
。再次说明,我知道这是错误的,但我不知道如何正确地显示它。
<<decorator>>
。个人认为这并不是装饰器模式的一个很好的例子。支持的理由是:BufferedReader 包装了另一个 Reader。即使它不是一个接口,它也有 LineNumberReader 来创建类似的结构。你可以认为将构造函数参数委托给相同的接口是一种“装饰”。 - Joop Eggen