デコレータのデザインパターンを学ぼうとしています。
適切に使用し、コーディングを学ぶために私が持っているシナリオは次のとおりです。
コマンドライン出力プログラム。デコレーターは outputText クラスをラップし、テキストの色、太字のテキスト、点滅するテキストなどの追加機能を出力に追加します。
これはこのパターンの適切な使用と見なされますか、それとも要点を逃していますか?
デコレータのデザインパターンを学ぼうとしています。
適切に使用し、コーディングを学ぶために私が持っているシナリオは次のとおりです。
コマンドライン出力プログラム。デコレーターは outputText クラスをラップし、テキストの色、太字のテキスト、点滅するテキストなどの追加機能を出力に追加します。
これはこのパターンの適切な使用と見なされますか、それとも要点を逃していますか?
あなたの考えは正しいと思います。これは、 GoF bookで提供されているテキスト エディターのサンプルに非常に似ています。
その本では、ウィンドウを描画したり、テキストを太字にしたりするためのクラスを備えたテキストエディターの例を使用しています。1つの章で、あなたの説明を模倣したデコレーターパターンの例を使用しているので、あなたは正しいと思います追跡。
それをさらに進めると、イタリック体のテキスト用のデコレータ クラス、太字のテキスト用の別のデコレータ クラスなどがありTextFormatter
ます。あなたの状況。
デコレータ パターンを使用すると、継承の代わりに委譲を使用して機能 (構造と動作の両方) を追加できます。あなたの例は、まさにそれをうまく応用したものです。利点は、継承関係のスパゲッティ グラフを作成する必要なく、クラスのさまざまなデコレータを使用できるという事実に基づいています。
このウィキペディアのページでは、このパターンに関する詳細情報を提供しています