更正模式以保存适用于不同表的模型

时间:2017-09-05 15:24:00

标签: design-patterns

我正在开发一个应用程序,我应该为模型保存信息。具体来说,我有一个Answer模型,用于存储问题输入的值。但是,有些问题接受多个答案(复选框),因此我必须有条件来以单一输入的不同方式处理此数组。我想知道是否存在模式(可能是策略模式?)来存储这些数据取决于同一模型中的问题类型(答案模型)。 谢谢大家。

1 个答案:

答案 0 :(得分:1)

听起来像是一种策略模式。

您可以这样设计课程:

public interface Question {
    public String getName();
    public AnswerType getAnswerType();
}

public interface Answer {
    public void accept(Question question);
    public String getValue();
}

public enum AnswerType {
    Singe,
    Checkbox
}

现在,您可以拥有多个可以接受某种类型的Answer实例。

public class MultipleValuedAnswer implements Answer {
    // Implementations.
}

public class SingleValuesAnswer implements Answer {
    // Implementations.
}

您可以将接受答案的任务委托给其他班级。

public class AnswerAcceptor {
    public void acceptAnswers(Question question) {
        if (question.getAnswerType() == AnswerType.Single) {
            new SingleValuedAnswer().accept(question);
        } else {
            new MultipleValuedAnswer().accept(question);
        }
    }
}

可能有更好的方法,我提出了一种可能性。