Я ищу самый умный способ обработки этого метода
public boolean addAccount(String cf, AccountType type) {
String iban = name + cf;
if (bankAccounts.containsKey(iban)) return false;
if (type.name().equals("CHECKINGACCOUNT")) {
CheckingAccount cc = new CheckingAccount(cf, iban, 0);
bankAccounts.put(iban, cc);
return true;
}
if (type.name().equals("DEPOSIT")) {
DepositAccount cd = new DepositAccount(cf, iban, 0);
bankAccounts.put(iban, cd);
return true;
}
if (type.name().equals("WEB")) {
WebAccount cw = new WebAccount(cf, iban, 0);
bankAccounts.put(iban, cw);
return true;
}
return false;
}
AccountType
- это enum, который содержит (DEPOSIT, WEB, CHECKINGACCOUNT);bankAccounts
- это HashMap, содержащий iban
(ключ) & CheckingAccounts OR DepositAccount OR WebAccount
;CheckingAccounts
, DepositAccount
, WebAccount
- это 3 класса, которые наследуют абстрактный класс с именем Account
.
Я пытаюсь заменить if
на HashMap, проверяющий ключ (Типaccount) со вставкой String пользователем и создает один из трех классов, связанных с ключом в HashMap.Проблема в том, что я не могу создать соответствие между Строкой и Учетной записью, потому что мне нужно создать экземпляр этого (но я не знаю cf в тот момент)
Может кто-нибудь показать мне лучший способсправиться?