Eng gekoppelten Code verstehen
Eng gekoppelter Code tritt auf, wenn Komponenten übermäßig von den Implementierungsdetails der anderen abhängig sind. Die Abhängigkeit kann ihren Code schwieriger verwalten, weniger flexibel und anfälliger für Fehler machen. Eine gängige Lösung besteht darin , Schnittstellen zu verwenden, um Komponenten zu entkoppeln und die Modularität zu verbessern.
In Ihrer Rolle als Softwareentwickler begegnen Sie den Herausforderungen von eng gekoppeltem Code, bei dem es eine direkte Abhängigkeit gibt. Sie wenden das Open/Closed-Prinzip an, um die Entkoppelung Ihres Codes zum Erstellen eines besser verwendbaren Systems zu behandeln.
Eng gekoppelter Code
Eng gekoppelter Code bezieht sich auf eine Situation, in der eine Komponente stark auf die internen Details eines anderen angewiesen ist. Dadurch entsteht ein starres System, das nur schwer zu ändern oder zu erweitern ist, ohne vorhandene Funktionen zu unterbrechen.
Beispiel für direkte Abhängigkeit
Betrachten Sie eine Library Klasse, die direkt mit einer BorrowableBook Klasse interagiert. Die Library Klasse ist von der spezifischen Implementierung von BorrowableBook abhängig, um Borrowing-Operationen durchzuführen.
public class BorrowableBook
{
public string Title { get; set; }
public bool IsAvailable { get; private set; } = true;
public BorrowableBook(string title)
{
Title = title;
}
public void Borrow()
{
if (IsAvailable)
{
IsAvailable = false;
Console.WriteLine($"You have borrowed \"{Title}\".");
}
else
{
Console.WriteLine($"\"{Title}\" is already borrowed.");
}
}
}
public class Library
{
private BorrowableBook _book;
public Library(BorrowableBook book)
{
_book = book;
}
public void BorrowBook()
{
if (_book.IsAvailable)
{
_book.Borrow();
}
else
{
Console.WriteLine("The book is not available.");
}
}
}
In diesem Code hängt die Library Klasse direkt von der BorrowableBook Klasse ab. Während die Abhängigkeit für eine einzelne Art von leihbarem Element funktioniert, führt sie zwei wichtige Probleme ein:
-
Direkte Abhängigkeit: Die
LibraryKlasse ist eng mit demBorrowableBookTyp gekoppelt. Wenn Sie neue ausleihbare Elemente (z. B. DVDs, Zeitschriften) hinzufügen möchten, müssen Sie dieLibraryKlasse ändern. - Eingeschränkte Erweiterbarkeit: Das aktuelle Design erschwert das Erweitern der Funktionalität, ohne vorhandenen Code zu ändern.
Diese enge Kopplung verstößt gegen das Open/Closed-Prinzip (OCP), das besagt, dass software offen für Erweiterung, aber für Änderungen geschlossen sein sollte. Mit anderen Worten, Sie sollten in der Lage sein, neue Features hinzuzufügen, ohne vorhandenen Code zu ändern.
Indem Sie Abhängigkeiten reduzieren, können Sie:
- Verbesserung der Wartungsfreundlichkeit: Änderungen in einem Teil des Systems wirken sich weniger auf andere aus.
- Mehr Flexibilität: Neue Features können hinzugefügt werden, ohne vorhandenen Code zu ändern.
- Vereinfachen des Tests: Komponenten können unabhängig getestet werden.
Um das Problem zu beheben, müssen Sie den Code mithilfe von Schnittstellen umgestalten, um es modularer und flexibler zu gestalten.