0

上記の説明はとてもいいです。

ただし、以下に示すように、Decorator Pattern (DeP) の実装には少し混乱しています。

http://www.netobjectives.com/resources/books/design-patterns-explained/java-code-examples/chapter17/#17-1

上記のリンクされたコードのデザインは、tinypic.com/view.php?pic=xnaqlt&s=3 で提供されています。

「super.callTrailer();」で混乱しています。デコレータ クラス Header1、Header2、Footer1、および Footer2 で、すべて TicketDecorator から派生します。

「callTrailer();」だけでいいじゃないですか。? 各デコレーター オブジェクトは、「private Component myTrailer;」という行により、次のデコレーターへの独自の参照を持つことになります。

注: 私は Java に精通しておらず、デザイン パターンの初心者です。

4

1 に答える 1

2

どちらも同じ結果になります。callTrailer() は親クラスにのみ存在するため、callTrailer() を単独で呼び出すと、TicketDecorator の callTrailer() が自動的に呼び出されます。彼らがそこに super を入れた理由は、親のメソッドを呼び出していることを明示するためだと思います。

于 2010-07-17T16:32:59.380 に答える