私は教師、学生などの役割を持つことができるアプリケーションに取り組んでいます。機能のいくつかは似ているので、私は基本クラスUserも持っています。ユーザーにはAddRoleメソッドなどが含まれます。ドメイン設計の質問
教師オブジェクトが作成されると、「教師」ロールがオブジェクトに自動的に割り当てられます。私はコンストラクタ内でこれをやっていますが、私はそれが醜いと思います。コードは次のとおりです。
public class Teacher : User
{
public Teacher()
{
AddRole(new Role() { RoleName = "Teacher"});
}
}
データベースには教師用のテーブルがありません。すべてがユーザーベースです。教師は単なる役割であり、学生とは異なる機能を持っています。
どうすればいいですか?
私はこのアプローチが好きです。ユーザーコンストラクタに文字列またはRoleType列挙型を送信する必要があるかどうかは不思議です。ありがとう! – azamsharp
私はいくつかの種類の列挙型に行きます。そのため、マジック文字列は避けられ、比較演算子の機能は明確で定義されています。 – Tom
文字列または列挙型を使用する代わりに、型自体を使用するのはどうですか?例えば。 public Teacher():ユーザー(typeof(TeacherRole))。これにより、型/列挙型を同期させておく必要がなくなります。 デコレータ+ファクトリ/ビルダーのパターンを使用することもできますが、非常に複雑なものになる可能性があります。 –