Примерно так:
interface IBankAccount
{
public void AddFunds(double value);
public void RemoveFunds(double value);
}
...
class BankAccount implements IBankAccount
...
class TransferManager
{
public TransferManager(IBankAccount Source, IBankAccount Destination, double Value) {
...
...и т.д. Везде заменить прямую зависимость от класса на зависимость от интерфейса, ибо:
- Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
(Класс - это модуль, а интерфейс - это абстракция.)