Что сделать, что бы не нарушался принцип инверсии зависимостей? У меня тут прога на java, суть которой совершать транзакцию между двумя банковскими аккаунтами. Все работает, но нарушен принцип инверсии зависимостей. Как это исправить?class BankAccount
{
private String AccountNumber;
private double Balance;
public BankAccount(String AccountNumber, double Balance) {
this.AccountNumber = AccountNumber;
this.Balance = Balance;
}
public void AddFunds(double value)
{
Balance += value;
}
public void RemoveFunds(double value)
{
Balance -= value;
}
@Override
public String toString() {
return "BankAccount{ " + "AccountNumber=" + AccountNumber + ", Balance=" + Balance + " }";
}
}
class TransferManager
{
public TransferManager(BankAccount Source, BankAccount Destination, double Value) {
this.Source = Source;
this.Destination = Destination;
this.Value = Value;
}
private BankAccount Source;
private BankAccount Destination;
private double Value;
public void Transfer()
{
Source.RemoveFunds(Value);
Destination.AddFunds(Value);
}
}
public class Bank {
public static void main(String[] args){
BankAccount from = new BankAccount("4321", 1200);
BankAccount to = new BankAccount("1234", 200);
System.out.println(from);
System.out.println(to);
TransferManager mymgr = new TransferManager(from,to,300);
mymgr.Transfer();
System.out.println(from);
System.out.println(to);
}
}

21 Авг 2019 в 07:05
230 +1
0
Ответы
1

Для исправления нарушения принципа инверсии зависимостей в данном коде, необходимо внести изменения следующим образом:

Создать интерфейс или абстрактный класс, который будет определять методы AddFunds и RemoveFunds для банковского аккаунта.

В классе BankAccount реализовать этот интерфейс или расширить абстрактный класс.

В TransferManager добавить зависимость от интерфейса или абстрактного класса, а не от конкретного класса BankAccount.

После внесения этих изменений, будет соблюдаться принцип инверсии зависимостей, так как TransferManager будет зависеть от абстракции, а не от конкретной реализации BankAccount.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир