Во-первых, я предполагаю, что Java Enums должны соответствовать тем же правилам, что и обычные классы.Является ли это Enum нарушением принципа единой ответственности?
Я немного туманно о значении «Единой ответственности». Со следующим кодом мне интересно, является ли метод hasSucceed
нарушением, поскольку его логика выходит за рамки проведения уровня.
Если это нарушает принцип, как я буду реорганизовать?
package foo;
public enum Level {
AWFUL(-4),
TERRIBLE(-3),
POOR(-2),
MEDIOCRE(-1),
FAIR(0),
GOOD(1),
GREAT(2),
SUPERB(3),
LEGENDARY(4);
private final int level;
Level(int level) {
this.level = level;
}
public int getValue() {
return this.level;
}
public boolean hasSucceeded(Level requiredLevel, Level roll) {
return getValue() + roll.getValue() >= requiredLevel.getValue();
}
}
Как и где вы используете 'hasSucceeded'? Возможно, этот метод относится к классу вызывающих. –
Просто, чтобы вы знали, что вы можете заменить 'level' и' getValue' на 'ordinal() - 4' – resueman
. Я думал, что метод hasSucceeded был лучшим в уровне, потому что я думал, что лучше абстрагировать весь -4 ... 4 системы. – HedgepigMatt