相続のコアDecoratorパターンは、抽象クラス、継承と組成物または組み合わせです!
これは、ネストされたレイヤーを使用しています:
BaseCharacter文字= 新しいメイジ(); 文字 = 新しい BaseDecorator(文字); // 文字 = 新しい DecoratorHelmet(文字); // 文字 = 新しい DecoratorShoulder(文字); // 文字 = 新しいDecoratorBreastplate(caracter)。 文字 = 新しいDecoratorCuish(文字); 文字 = 新しい DecoratorGlove(文字);
あなたはそれを書くためにチェーンできますか?
パブリック クラスBaseDecorator:BaseCharacter { プライベート BaseCharacter _BaseCharacter = nullを。 公共BaseDecorator(BaseCharacter文字) { この ._BaseCharacter = キャラクタ; } パブリック オーバーライド ボイドショー() { この._BaseCharacter.Show()。 } 公共BaseDecorator Decorat <T>()T:BaseDecorator { リターン(T)Activator.CreateInstance(typeof演算(T)、新しいオブジェクト[] {この})。 } }
これは、最大連鎖させることができます!
BaseCharacter文字= 新しいメイジ(); 文字 = 新しい。BaseDecorator(文字).Decorat <DecoratorHelmet>()Decorat <DecoratorCuish>(); // character.Show();