デコレータを作成する
デコレータデザインパターンは、オブジェクトに追加の振る舞いを動的に追加するために使用されます。 さらに、インターフェースを使用することによって、デコレータを使用して、複数の継承と同様に型を統一することができます。
例として、デコレーターに入れたいオブジェクト Bird と Lizard があるとします:
1。 抽出インターフェースを使用してオブジェクトインターフェースを取得するリファクタリング
デコレータはこれらの両方のクラスから継承できないため、これらのオブジェクトの両方に対して リファクタリングする メニュー Control+Shift+R から インターフェースの抽出リファクタリング を呼び出して、インターフェースを取得できます。

このリファクタリングを呼び出すと、インターフェースに表示するメンバーを確認するウィンドウが表示されます。

両方のクラスでこれを行った後、次のコードが完成します:
2。 デコレータクラスを宣言する
これらのインターフェースを使用して、デコレータを作成することができます。 まず、 Dragon というクラスを宣言し、 IBird と ILizard の両方を実装していることを示します。
集計されたメンバーの場合。 最も簡単な方法は、これらの両方を最初にフィールドとして宣言することです。
3。 未使用のフィールドを初期化するにはクイックフィックスを使用する
今度は、未使用のフィールドに クイックフィックスを適用して、両方をコンストラクターパラメーターから初期化することができます:

その後、私たちのクラスは次のようになります:
4。 ソースオブジェクトの委譲メンバーを生成する
最後の仕上げとして、bird と lizard の両方の委譲メンバーを生成する必要があります。 これは簡単です — 生成メニュー Alt+Insert を開き、 委譲メンバー を選択します:

ReSharper は次に、どのメンバーを委譲する必要があるかを質問します。

そして、ここに最終結果があります:
以上です ! 私たちのデコレータは準備ができています。