Heim > Artikel > Backend-Entwicklung > Wie kann Refactoring Friend-Abhängigkeiten bei der Verwaltung gemeinsamer Ressourcen beseitigen?
Entfernung und Refactoring der Friend-Abhängigkeit in einem Shared Resource Management-Design
Im objektorientierten Design führt die „Friend“-Abhängigkeit zu einer engen Kopplung zwischen den Klassen und wirft Wartungsprobleme auf. Um solche Abhängigkeiten zu beseitigen und gleichzeitig die Funktionalität eines Shared-Resource-Management-Designs beizubehalten, wird ein mehrstufiger Refactoring-Prozess empfohlen.
Schritt 1: Einführung einer abstrakten Schnittstelle
Die Der erste Schritt besteht darin, die „Friend“-Abhängigkeit durch eine abstrakte Schnittstelle, InternalInterface, zu ersetzen, die die Operationen definiert, auf die zuvor nur die freundliche Klasse zugreifen konnte.
Schritt 2: Operationen in die Schnittstelle verschieben
Die Operationen, die die „Aufruf“-Abhängigkeit darstellten, werden von der ClassA-Implementierung zur InternalInterface-Definition verschoben.
Schritt 3: Schnittstelle und Implementierung verbinden
An Gewähren Sie Zugriff auf das InternalInterface, führen Sie einen geschützten Konstruktor und eine geschützte Generalisierungsbeziehung zwischen ClassA und InternalInterface ein.
Schritt 4: Kleben Sie die Komponenten
Führen Sie im ClassAAccessor-Konstruktor a ein setInternalInterfaceRef()-Methode, die es ClassAAccessor ermöglicht, einen Verweis auf InternalInterface von ClassA zu erhalten.
Schritt 5: Interne Schnittstelle für den Zugriff verwenden
Implementieren Sie die Methode attachmentAccessor() in ClassA um die interne Schnittstellenreferenz an ClassAAccessor zu übergeben.
Schritt 6: Kopplung optimieren (optional)
Führen Sie zur weiteren Entkopplung eine zweite Schnittstelle ein, InternalClientInterface, um zwischen ClassAAccessor zu vermitteln und InternalInterface.
Vorteile:
Nachteile:
Das obige ist der detaillierte Inhalt vonWie kann Refactoring Friend-Abhängigkeiten bei der Verwaltung gemeinsamer Ressourcen beseitigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!