Вы наверное не совсем верно понимаете, что такое
принцип инверси зависимостей.
Вы нигде не используете интерфейсы, у вас все жестко зашито, например TransferManager умеет работать только с одним единственным типом объектов BankAccount ....
P.S. Почитайте про code convention, потому что непросто читать ваш код.