Decorator は、 構造に関するパターンのひとつで、 オブジェクトをデコレーターと呼ばれる特別なラッパー・オブジェクト内に配置することにより、 新しい振る舞いを動的に追加できます。
対象のオブジェクトとデコレーターは同じインターフェースに従うため、 デコレーターを使うと、 オブジェクトを何重にも包み込むことができます。 その結果として生成されるオブジェクトは、 全部のラッパーの振る舞いを集積した振る舞いをします。
複雑度:
人気度:
使用例: Decorator は、 C++ コードではかなり標準的で、 特にストリームに関連するコードではよく使われます。
見つけ方: Decorator は、 そのクラスと同じクラスまたはインターフェースのオブジェクトをパラメーターとして取る生成メソッドかコンストラクターの存在により識別できます。
概念的な例
この例は、 Decorator デザインパターンの構造を説明するためのものです。 以下の質問に答えることを目的としています:
- どういうクラスからできているか?
- それぞれのクラスの役割は?
- パターンの要素同士はどう関係しているのか?
main.cc: 概念的な例
Output.txt: 実行結果
他言語での Decorator