Как реализовать логику ответа на вопрос как в передней части, так и в задней части - PullRequest
0 голосов
/ 26 августа 2011

На моем сайте я покажу основной вопрос с некоторыми ответами.

Так что, если пользователь щелкнет один из ответов, я снова покажу список вопросов с соответствующими ответами. Поэтому у каждого ответа снова возникают определенные вопросы. Этот процесс продолжается до тех пор, пока не будет ответа, в котором нет вопросов. Как я могу сделать это наиболее эффективно на стороне сервера в Java, а также на стороне HTML. Как я могу сохранить эту структуру в какой-то модели.

Если кто-нибудь знает какой-либо проект с открытым исходным кодом, который реализует эту логику, пожалуйста, помогите.

1 Ответ

1 голос
/ 26 августа 2011

Для меня это звучит так, как будто вам нужно дерево:

  • Вопрос будет представлен в виде узла
  • Ответ - это преимущество, ведущее от одного вопроса к другому
  • Ответ, не приводящий к новому вопросу, просто будет иметь целевой узел как ноль.

В Java вы могли бы представить это так:

class Question {

    // The question, for example "What is the color of the sky?"
    String question;

    // List of answer alternatives: For example
    //     - Blue (with destination, "What is the color of the sun?")
    //     - Red  (with destination null)
    List<Answer> answers;

}


class Answer {

    // The answer, for example "Blue"
    String answer;

    // The next question (or null, if this answer is terminating)
    Question destinationQuestion;
}

Чтобы создать полное дерево этих объектов, вам нужно либо

  • Предоставить конструкторы, которые принимают один аргумент для атрибута

    В таком случае вам нужно построить дерево из листьев (поскольку вы не можете предоставить промежуточные узлы с их аргументами, если вы их уже не создали)

  • Создайте "сеттер" -методы, создайте все вопросы и "установите" соответствующих детей там, где они должны быть. (Это позволит вам построить дерево от корня до листьев.)


Другие альтернативы:

  • Вы можете использовать DAG (ориентированный ациклический граф), если вы хотите повторно использовать части дерева в нескольких местах (то есть, если несколько ответов приводят к одному и тому же ответу)

  • Вы можете использовать обычный ориентированный граф, если хотите разрешить циклы в системе вопросов.

В любом случае, два класса, которые я описал выше, отвечают всем требованиям!

...