Типы кредитных карт довольно ограничены, есть только так много стандартных кредитных карт. Если вы пытаетесь определить тип кредитной карты, один из подходов состоит в том, чтобы использовать интерфейс для представления кредитной карты, а затем перечисление для представления вероятного конечного числа карт.
public interface CreditCard {
}
enum StandardCreditCard implements CreditCard {
MASTERCARD,
AMERICAN_EXPRESS,
BANK_OF_AMERICA
}
Преимущества этого подхода в том, что он быстрый и грязный. Перечисления по умолчанию используют шаблон множественного числа. Каждый элемент имеет тип CreditCard, но вы все равно можете добавить больше кредитных карт в будущем, если вам нужно.
interface MyOtherCreditCard extends CreditCard {
}