繁体   English   中英

域驱动设计问题

[英]Domain Driven Design Question

我有一个需要咨询的情况。 我有一个应用程序,其中有两种用户:学生和教师。 学生和教师共享一些通用属性,例如名字,姓氏,电子邮件,用户名,密码等。因此,我从用户派生了学生和教师类。

现在的问题是,有时候我真的不知道用户是学生还是老师。 就像在实现自定义成员资格提供程序时以及在GetUser函数中一样。 GetUser使用userName,但是现在我丢失了应该返回的内容。

对于学生功能,我为老师创建了IStudent和ITeacher。 但是有时我只想返回一个用户,而不关心他是学生还是老师。 但是返回基类似乎也不是一个好主意。

更新:

我认为返回用户并且甚至没有学生和教师班级是个好主意。 学生和教师只是角色,可以由StudentServices和TeacherServices管理。

一个典型的场景和一个典型的逃避问题的方法。 是的,在继承受到约束的过程中,总是存在痛苦。 但是,当您将行为注入到班级中时,就会产生好处。 现在看来您已经决定使用User类而不是将User作为基础类和子类Teacher和Student。 如果您将教师和学生作为角色,但在单独的服务中进行处理,则可能是个好主意……我认为这很奇怪。 由于这些服务都需要处理用户逻辑,因此您可能会在这些服务中得到重复的代码。

事实是,如果您开始通过服务层补偿来抵御此类困难,那就是通往贫血症域模型的道路,在该模型中逻辑从域层泄漏到gui或服务层。 教师和学生的独特之处以及逻辑/行为的不同之处应在域层中表示。

您可以使用继承(也许是最好的解决方案),也可以使用继承作为角色,而实际上将角色设为自定义枚举-看(我认为)Jimmy Bogard,了解如何使用行为扩展自定义枚举。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM