我搜索可重复使用的工具或算法,使我能够动态地将条件逻辑应用于问题。
让我们详细解释一下:
问题1 - 你的年龄是多少?a) less 18
b)between 18-25
c) greater than 25
如果他选择
a) then he go to Question 2
b) he will goto question 5
c) he will goto question 7
所以我说下一个问题取决于当前问题的答案。我不需要为每个问题设置条件。我需要它是动态的。
我希望现在很清楚。是否有任何组件或设计模式或算法实现我所说的
欢迎所有想法。
答案 0 :(得分:5)
听起来你可能想要一个查找表,有效地将该对(输入问题,答案)映射到下一个要问的问题编号。如果表格中没有条目,也许它应默认为“转到下一个问题”。
您在数据结构中的确切表示方式取决于您用于存储问题的内容。例如,在SQL中,您可以拥有一个包含“输入问题,答案,下一个问题”列的表。在C#中,您可能只有Dictionary<Tuple<int, int>, int>
或List<AnswerPath>
AnswerPath
{{1}} {{1}}包含与SQL表相同的三个值。 (更改名称,这很糟糕,但你明白了。)
答案 1 :(得分:4)
考虑将问题构建为图表,其中每个答案都指向一组有序的其他问题。
更好的是,为每个问题提供一系列必须由之前的答案满足的先决条件。例如,对于问题2,先决条件可能是问题1的答案是a或b。
然后在确定下一个问题时,您只需遍历每个问题,直到找到符合其先决条件的下一个问题。
答案 2 :(得分:2)
为每个答案添加一个名为Next Question
的属性。
答案 3 :(得分:1)
您可以使用Dictionary<Tuple<Question,Answer>>,Question>
,以便问题和答案成为下一个问题的关键。
答案 4 :(得分:1)
听起来像是Chain of Responsibility模式的工作......