2016-09-26 9 views
0

現在、デコレータパターンを使用してプログラムを作成しています。私は最初のクラスに追加できるデコレータの量を制限する方法を見つけようとしています。例:デコレータパターンデコレータ制限

Pizza plainPizza = new PlainPizza; 
Pizza sausage = new Sausage(plainPizza); 

追加するデコレータの数に制限することができます。このような私は前のコードの上にこれを追加しようとして:

Pizza pepperoni = new Pepperoni(sausage); 

私はペパロニがラップ/追加できるようにすることを防ぐことができますどのように?

スロー例外を使用しようとしていますが、デコレータがそのスーパークラスを呼び出しているため、インスタンス変数を初期化する前にテストできません。

+1

できません。これがデコレータパターンのポイントです。 –

+0

デコレータパターンによく似ていますが、ユースケースに適したパターンではありません。 –

+0

@XaverKapellerこれは私の教授が研究室でやっていることです。これは多くのタスクの1つです。何をすべきか分かりません。私は例外をスローしようとしていますが、私はカウントするためのテストが発生する前にスーパーに電話するので、私はできません。 – Cole

答えて

0

Builder patternを使用して、必要なすべてのタイプのデコレータを適用するビルダーを作成できます。 Builderは、それを許可している以上に追加しようとすると、それに応じて適用して対応するデコレータの数を内部的に追跡することもできます。