私は、同様のプロパティ(例:Student、Teacher、Contact、User)を持つ多数のサブクラス(Personの)を必要とするアプリケーションを構築しています。プロパティにはかなりの重なりがありますが、多くの違いもあります。たとえば、PersonはStudent、Contact、Userのいずれかです。ここでは(分かりやすくするために制限)の例である:複数の類似したクラスのための良いデザインと考えられるもの
Person
FirstName
LastName
DOB
CurrentAge
Student <- Person
StudentId
Average
Email
Phone
Contact <- Person
Email
Phone
Address
User <- Person
Email
UserName
DOB
CurrentAge
私はコードを書く避けるために複数回を希望 - 例:などのメール検証コード、年齢を計算するのに必要なコードを、また、我々は、おそらく追加する必要があります後でクラスが追加され、同様のオーバーラップと違いがあります。
これを処理するには、どのような良い設計が考えられますか、それともどのような設計パターンがこれをカバーしていますか?
デザインパターンの私の基本的な理解から、デコレータは正しくないようです。私は動作を追加していません。コンポジットは再帰的ではありません。私はまた、これに理想的なパターンがないかもしれないことを理解していますが、それは非常に共通の要件のようです。
重要な場合、これは主にASP.NET/C#/ VB.NETで使用されます。
その他の質問には、2つの同様のクラス/オブジェクト(一般にサブクラス化)の回答がありますが、任意の数の類似したクラスについては何も見つかりませんでした。
関連するデータベース設計に関する提案も歓迎します。
私は正しいとして2つの答えを受け入れるように見えることはできませんが、私の最終的な解決策は、データを格納し、データそのものの検証処理するために、ポールSonierから組成の提案をincoroporateなり、そしてからインターフェイスと役割の提案重複するプロパティ(複数のインターフェースを実装する)とロジック(IContactに少なくとも1つの連絡方法が指定されていることを検証する役割)を処理する@Don Robby。 –