我有一个应用程序,用户在其中选择“初始选择”,此选择将呈现另一组选择,每个选择都可以调用呈现另一选择列表的应用程序流程。
例如:
app: what is you name ?
user: poko
app: what is your profession?
1.programmer
2.Lawyer
3.blacksmith
user: 2
app: what total income per year
1. above 100$
2. above 200$
user: 2
in the application:
app invokes layer handler with handling income above 200 $
这种流程的最佳设计模式是什么?
答案 0 :(得分:1)
正如@Roman所说,这是一个数据结构。您应该为流选择一个数据结构,然后,您应该选择一种方法将该数据结构表示到应用程序中。例如,如果此数据结构是树,则可以使用Composite pattern来表示它。例如(我不知道您使用了哪种编程语言,因此我使用了PHP):
class Answer
{
/**
* @var string The text of the answer which will be shown to the user
*/
public $text;
/**
* @var Question The question which will be shown to the user if the current answer was chosen
*/
public $nextQuestion;
}
class Question
{
/**
* @var string The text of the question which will be shown to the user
*/
public $text;
/**
* @var Answer[] List of answers by the question
*/
public $answers = [];
/**
* Choice of answer and getting the next question
*
* @param string $value The text of the answer
* @return Questio The next question
*/
public function chooseAnswer(string $value) : Question
{
foreach($this->answers as $answer) {
if ($answer === $value) {
return $answer->nextQuestion;
}
}
}
}
答案 1 :(得分:0)
这种流程的最佳设计模式是什么?
没有一个单一的问题模式。
其他设计模式不能解决问题。相反,它可以帮助您构建代码库。换句话说:您不需要设计模式即可解决此问题,但是可以使用一个或多个 来构造代码。
您拥有可以增强算法的数据结构,而不是设计模式。对于算法问题,总是有适用的数据结构。
您的问题是流程。这听起来像是您可以遍历的graph女巫。顶点可以是一个对象,其中包含有关问题和选择的信息,而边是答案。