Предположим, у меня есть следующее перечисление
public enum EmailType {
FORGET_PASSWORD, ACHIEVMENT_UNLOCK, WELCOME
}
и у меня есть функция, которая генерирует темы электронной почты на основе типа (но для этого все еще требуются динамические данные), например,
public String generateEmailSubject(EmailType emailType, Object obj) {
String subject;
switch(emailType) {
case WELCOME:
User user = (User) obj;
subject = "Hello " + user.getFirstName();
case FORGET_PASSWORD:
User user = (User) obj;
subject = "Forget password " + user.getEmail();
break;
case ACHIEVMENT_UNLOCK:
Achievment achievment = (Achievment) obj;
subject = "Achievment Unlock:" + achievment.getTitle();
break;
}
return subject;
}
Это плохая практика? Если да, то каков хороший дизайн, чтобы справиться с этим? Возможно, отдельный метод для каждого EmailType
, но это может привести ко многим методам, и субъекты не будут централизованы, когда мне потребуется их изменить.