I have the finance application where we can have different types of transactions, like balance enquiry, funds transfer, and pin change etc. Now the Transaction
is a base class, and there are specific child classes implementing it as per above use cases.
Class Transaction
{
int txnId;
String sourceAccountNumber;
}
Class PinChange extends Transaction
{
int pin;
}
Class FundsTransfer extends Transaction
{
int amount;
String destAccountNumber;
}
Now I have a BankService
object which takes transaction and executes it.
Class BankService
{
executeTransaction(Transaction transaction)
}
I want to know:
How will
BankService
knows what is the type of transaction? Do I need to wrap it up in a new Enum likeTransactionType
and put it in transaction base class?When the
BankService
comes to know type of transaction, how will it access specific class details? I think it needs to type cast transaction to specific child class, which seems bad to me. Thoughts?
executeTransaction
has a single responsibility?