2017-10-28 9 views
1

学校のレポートでは、java.io.ReaderパッケージがDecorator patternをどのように実装しているか説明する必要があります。私はjava.ioパッケージ(例えばhere)について複数の説明を見てきましたが、java.io.Readerパッケージ(それが異なっていても)については説明していません。ここに私が今いるのは、私はこのデザインが正しく表示されていないことを知っていますが、java.io.Readerパッケージが実際にどのように実装しているかはわかりません。デコレータパターンjava.io.reader

decorator java.io.Reader

したがって、この場合にはReaderComponentInputStreamReaderConcrete ComponentBufferedReaderDecoratorLineNumberReaderConcrete Decoratorだろう。再び、私はこれが間違っていることを知っていますが、正しく表示する方法はわかりません。

+0

ケースは正しいです。 BufferedReaderに '<>'を追加することができます。個人的には、これをデコレータパターンの例とは言いません。プロが主張するもの:BufferedReaderは他のReaderをラップします。また、インターフェイスではありませんが、同様の図を作成するLineNumberReaderがあります。コンストラクタパラメータ_と同じインタフェースにデリゲートすると、_ "decorates" _と主張できます。 –

+0

LineNumberReaderを追加するのは少し似ていますが、同様の図があるだけです。 –

答えて

0

図は正しいです。 Intellij(または他の有能なツール)にアクセスできる場合は、JavaタイプのUMLクラス図が表示されます。以下のスニペットはそのような図です。

enter image description here

あなたが見ることができるように、それはあなたのものと一致します。私が考慮する1つのことは、に追加の動作を提供するので、BufferedReaderコンクリートデコレータです。

+0

ありがとう!この場合、具体的なデコレータではなく、デコレータとは何でしょうか?私はまだ違いを得ることはできません。 –

+0

@MeesKluivers、問題ありません。定義によると、デコレータは 'Reader'をラップするクラスですが、*新しい*動作や機能は追加しません。 – ChiefTwoPencils

関連する問題