作为我们建立的保险索赔系统的一部分,索赔管理人员可以记录与索赔有关的来电。
索赔管理器必须通过询问许多“数据保护”问题来验证调用方,这些问题是根据数据库中针对索赔的信息动态生成的。我相信这种类型的安全性被称为“基于知识的身份验证”。
关于数据保护问题的Notes:
下面是添加调用视图的数据保护部分的屏幕前后截图:


当前的系统是五年前编写的,我们没有尝试使用任何设计模式或现代方法(比如领域驱动的设计),因为我们缺乏时间和理解。
我们现在有机会重写这个软件,并希望遵循域驱动的方法。
一个First实体类的DataProtectionQuestion草案:
public class DataProtectionQuestion
{
public string Question { get; set; }
public IEnumerable Answers { get; set; }
public bool IsRequired { get; set; }
public string Answer { get; set; }
public bool IsAnswered => !string.IsNullOrWhiteSpace(Answer);
public bool AnswerIsCorrect => Answers?.Contains(Answer) ?? false;
}产生于此设计的Questions:
Second草案(试图回答上述一些问题):
public class DataProtectionAnswer
{
public DataProtectionAnswer(string answer, bool isValid)
{
Answer = answer;
IsValid = isValid;
}
public string Answer { get; private set; }
public bool IsValid { get; private set; }
}
public class DataProtectionQuestion
{
public DataProtectionQuestion(string question, bool isRequired, IEnumerable answers)
{
// validate non-null parameters?
Question = question;
IsRequired = isRequired;
Answers = answers;
}
public string Question { get; private set; }
public bool IsRequired { get; private set; }
public IEnumerable Answers { get; private set; }
public DataProtectionAnswer SelectedAnswer { get; private set; }
public bool IsAnswered => SelectedAnswer != null;
public bool AnswerIsCorrect => SelectedAnswer?.IsValid ?? false;
public void SetSelectedAnswer(DataProtectionAnswer answer)
{
// Should validate that answer is not null and contained in Answers?
SelectedAnswer = answer;
}
}关于更多问题的Some answers..leading?:
正如您可能知道的那样,我正在挣扎,并且真的很难理解如何使用DDD方法来建模这个场景。也许DDD不适合这种情况。我不知道,我现在觉得很蠢!
有谁能就前进的方向/更好的方法提供一些指导/建议?
发布于 2019-04-02 16:19:54
https://codereview.stackexchange.com/questions/216727
复制相似问题