Делаю API для заказа участников разных соревнований. В соревнованиях есть разные испытания, например, отжимания и бег. Дело в том, что попытки можно измерять по-разному, в данном случае отжимания в повторениях и бег в секундах, поэтому я думаю, что лучший способ сделать это - иметь метод, который можно переопределить, скажем, getRating(int mark ), где отметка будет равна 5 отжиманиям или 10 секундам. Этот метод вернет рейтинг, который спортсмен будет иметь в этом испытании.
С моей точки зрения, у меня есть два подхода. Первый использует перечисление, но поскольку я хочу сохранить информацию, я не совсем уверен, как это сделать. Я видел, что мне нужно использовать здесь обозначение @Enumerated. Я думаю, это решит проблему, но если я захочу получить информацию об испытаниях после (имя, описание или любой другой атрибут, который я включаю), возникнут ли у меня проблемы, поскольку их нет в БД? Также важно отметить, что если будет только одно соревнование, это не будет проблемой, но если число начнет расти, количество испытаний увеличится еще больше, поэтому я действительно не знаю, является ли это лучший подход.
Это будет примерно так:
Код: Выделить всё
public enum Trial {
PUSH_UPS("Push-ups", "Test your upper body strength by doing push-ups.") {
@Override
public String getRating(int result) {
if (result >= 40) {
return "Excellent";
} else if (result >= 30) {
return "Good";
} else if (result >= 20) {
return "Fair";
} else {
return "Poor";
}
}
},
PULL_UPS("Pull-ups", "Test your upper body strength by doing pull-ups.") {
@Override
public String getRating(int result) {
if (result >= 20) {
return "Excellent";
} else if (result >= 15) {
return "Good";
} else if (result >= 10) {
return "Fair";
} else {
return "Poor";
}
}
},
RUNNING("Running", "Test your cardiovascular endurance by running.") {
@Override
public String getRating(int result) {
if (result = 20) {
return "Fair";
} else {
return "Poor";
}
}
}
public class PullUpsTrial extends Trial {
public PullUpsTrial() {
super("Pull-ups", "Test your upper body strength by doing pull-ups.");
}
@Override
public String getRating(int result) {
if (result >= 20) {
return "Excellent";
} else if (result >= 15) {
return "Good";
} else if (result >= 10) {
return "Fair";
} else {
return "Poor";
}
}
}
public class RunningTrial extends Trial {
public RunningTrial() {
super("Running", "Test your cardiovascular endurance by running.");
}
@Override
public String getRating(int result) {
if (result
Подробнее здесь: [url]https://stackoverflow.com/questions/78248639/approaches-to-persist-enum-in-java[/url]