Domain driven design 领域设计问题
我正在申请一个我可以担任老师、学生等角色的职位。有些功能是类似的,所以我也有一个基类用户。用户包含AddRole方法和其他内容 现在,我希望在创建Teacher对象时,自动将“Teacher”角色分配给该对象。我在构造器中做这件事,但我认为这很难看。代码如下:Domain driven design 领域设计问题,domain-driven-design,Domain Driven Design,我正在申请一个我可以担任老师、学生等角色的职位。有些功能是类似的,所以我也有一个基类用户。用户包含AddRole方法和其他内容 现在,我希望在创建Teacher对象时,自动将“Teacher”角色分配给该对象。我在构造器中做这件事,但我认为这很难看。代码如下: public class Teacher : User { public Teacher() { AddRole(new Role() { RoleName = "Teach
public class Teacher : User
{
public Teacher()
{
AddRole(new Role() { RoleName = "Teacher"});
}
}
数据库中没有教师表。一切都是基于用户的。教师只是一个角色,与学生有着不同的功能
我该怎么办 它在您的域模型中是如何工作的?任何适用于您的域模型的东西都应该在您的代码中。如何
//C++ look alike pseudocode
public class User{
String role;
User (role_){role = role_;}
String getRole(){return role;}
}
public class Teacher : User
{
public Teacher():User("Teacher")
{
}
}
实际上,
角色
表与用户
表有1对m或m对m的关系是很常见的
实现在很大程度上取决于如何使用您的角色。它们是否具有与之相关的功能?还是仅仅是标签?你的角色是固定的还是动态的?根据它们的使用和定义方式,接口或继承可能适用于您的角色,或者实际的
Role
对象可能更好。我喜欢这种方法。只是想知道我是否应该向用户构造函数发送一个字符串或RoleType枚举。谢谢我会使用某种枚举,这样可以避免使用神奇的字符串,并且比较运算符的功能是明确的和定义的。与其使用字符串或枚举,不如使用类型本身?例如,公共教师():用户(类型(教师角色))。这将消除保持类型/枚举同步的需要。另一种选择是使用Decorator+Factory/Builder模式,尽管事情可能会很快变得复杂起来!是的,AddRole()意味着不止一个角色。我认为Eric的意思是,一个角色也包含一个列表。