Мне нужно несколько предложений, чтобы реализовать элегантный способ избежать if-else. Я действительно не могу избежать условной проверки, мне нужно выполнить проверку, а затем добавить определенные свойства к объекту.
@Override
public Summary addPropertyBasedOnType(AssignmentEvent assignmentEvent, String userId) {
Summary summary = new Summary();
summary.setTimestamp((new Timestamp(System.currentTimeMillis())).toString());
summary.setUserId("");
summary.setGradingProgress(GradingProgress.Started);
summary.setComment(COMMENT);
if (list.contains(assignmentEvent.getItemType())) {
summary.setGradingProgress(GradingProgress.Incomplete);
summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
summary.setScoreGiven(ASSIGNMENT_MAX_SCORE);
} else if (assignmentEvent.getItemType().equalsIgnoreCase("some string")) {
summary.setGradingProgress(GradingProgress.PendingManual);
} else if (assignmentEvent.getItemType().equalsIgnoreCase("test string")) {
if (assignmentEvent.getLatestUserAssignmentData().getScoreSource().getSource() == 0) {
summary.setGradingProgress(GradingProgress.FullyGraded);
summary.setScoreGiven(assignmentEvent.getLatestUserAssignmentData().getScore());
summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
}
if (assignmentEvent.getLatestUserAssignmentData().getScoreSource().getSource() == 1) {
summary.setGradingProgress(GradingProgress.Started);
}
} else {
summary.setGradingProgress(GradingProgress.Incomplete);
summary.setScoreGiven(assignmentEvent.getLatestUserAssignmentData().getScore());
summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
}
return summary;
}
Я думал о Factory Pattern, но думаю, что это излишне.