コーディングする前にデザインパターンを選択しないことをお勧めします。まず、コードを記述します。次に、冗長なコード、または変化するコードの抽象化を開始します。変化する抽象化コードを理解するには、Head FirstDesignPatternsをお読みください。その本の冒頭には、戦略パターンを使用して、変化するものを抽象化する例があります。SimUDuckの例には、私がこれまでに見た中で最もよく説明されている戦略パターンの例の1つがあります。それがあなたが求めていることのように聞こえます。ただし、質問にはあなたがやろうとしていることの具体的な例がないため、ここで具体的な例を示すことは困難です。
そうは言っても、ここでは古き良きポリモーフィズムが必要なようです。すべてのオブジェクトを同じように扱い、同じプロパティを異なる値で設定する必要があります。これを行うには、インターフェースを作成し、さまざまなタイプすべてにそのインターフェースを実装させます。次に、呼び出し/消費コードで、これらの具体的なタイプのそれぞれをインターフェースとして扱います。
最初にデザインパターンを選択しようとすると、多くの場合、実装の詳細に基づいて状況が変化することに気付くでしょう。また、デザインパターンに対する最初の推測は、間違った適合になってしまいます。次に、実際の問題を解決せずに、デザインパターンを満たすようにコーディングすることになります。醜い場合でも、最初にコードを記述します。それを機能させます。次に、抽象化する領域を見つけます。そうすれば、それ自体が自然にデザインパターンに進化します。