[this post]では、@jonpが示すように状態パターンを実装するのに苦労しています。私は彼が投稿したものをどのように使うのかは分かりませんが、丸い穴に四角いペグを合わせようとしているかもしれないとの考えにつながります。だから私の質問は:モデリング "私は*ですが、私も**です"
私は複数の役割を再生することができます自分のサイトへの訪問者を持っている場合、すなわちUser
は、私は、継承を使用する必要があり、上記のAdvertiser
、またはすべてをVendor
、Employer
だろうか?
class Vendor : User {}
class Advertiser : User {}
エトセトラが、ユーザーはベンダーと雇用者の両方であるときに異なるクラスのインスタンスは、本当に私はこれが働くことができるかわからない...同じ基礎となるオブジェクトを指す:私は宣言しました。どのように私はそれをモデル化するのですか?
*更新*
おかげで、誰も(あなたのすべては、(それは私が与えることができるすべてです)ポイントを得ます)。私はEF、ダウンキャスティング、そして最後の数日間の州のパターンを使って、ディープ・コピーの上に私の髪を引っ張ってきました。役割のアプローチははるかに理にかなっています。ユーザーが複数の役割を持つことができる場合を検討し、
public class User
{
public Role Role { get; set; }
}
public abstract class Role
{
abstract void DoRoleSpecificStuff();
}
public class Vendor : Role
{
public void DoRoleSpecificStuff()
{
/* ... */
}
}
public class Employer : Role
{
public void DoRoleSpecificStuff()
{
/* ... */
}
}
public class Advertiser : Role
{
public void DoRoleSpecificStuff()
{
/* ... */
}
}
:異なる役割は、例えば、多型と抽象メソッドを使用して実施される異なるロジックを含むようにしている場合
多分私はC++、任意の継承を持つ言語で興味がありますか? ;-) –
@Kerrek C++では、データベースから読み取った内容に基づいて動的なロールセットを継承する一意のユーザーサブタイプを動的に作成することについてはあまり役に立ちません。 –