用户选择选项时,选项列表的设计模式是什么

时间:2019-02-08 09:29:00

标签: design-patterns

我有一个应用程序,用户在其中选择“初始选择”,此选择将​​呈现另一组选择,每个选择都可以调用呈现另一选择列表的应用程序流程。

例如:

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 $

这种流程的最佳设计模式是什么?

2 个答案:

答案 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女巫。顶点可以是一个对象,其中包含有关问题和选择的信息,而边是答案。