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