Heim > Artikel > Backend-Entwicklung > Wie kann man eine „Freund“-Abhängigkeitserklärung umgestalten: Eine Schritt-für-Schritt-Anleitung zum Entfernen übermäßiger gegenseitiger Abhängigkeiten?
Man kann auf ein Szenario stoßen, in dem eine „Freund“-Abhängigkeit zwischen zwei Klassen entfernt wird erwünscht, insbesondere aufgrund von Bedenken hinsichtlich übermäßiger gegenseitiger Abhängigkeit, Wartungsproblemen und veralteter UML-Standards.
Extrahieren Sie die von der „Friend“-Klasse bereitgestellten Methoden und erstellen Sie eine neue abstrakte Schnittstelle. Stellen Sie eine Abhängigkeitsbeziehung von der „Friend“-Klasse zur Schnittstelle und eine „Call“-Abhängigkeit von der anderen Klasse zur Schnittstelle her.
Verschieben Sie die Operationen die die „Aufruf“-Abhängigkeit von der abhängigen Klasse zur abstrakten Schnittstelle bilden. Lassen Sie die Schnittstelle einen geschützten Konstruktor für Vererbungszwecke erweitern und verbergen Sie die geschützte Generalisierungszuordnung zwischen der abhängigen Klasse und der Schnittstelle.
Erstellen Sie im letzten Schritt eine Methode in der Klasse „Freund“, um eine Referenz der abstrakten Schnittstelle an die abhängige Klasse zu übergeben. Rufen Sie diese Methode während der Initialisierung aus der abhängigen Klasse auf, um die erforderliche Verbindung herzustellen.
KlasseA (Anbieter):
<code class="cpp">class ClassA : protected InternalInterface { public: attachAccessor(ClassAAccessor &accessor) { accessor.setInternalInterfaceRef(*this); } };</code>
ClassAAccessor (Freund):
<code class="cpp">class ClassAAccessor { public: ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) { classA.attachAccessor(*this); } private: InternalInterface* internalInterfaceRef; };</code>
Das obige ist der detaillierte Inhalt vonWie kann man eine „Freund“-Abhängigkeitserklärung umgestalten: Eine Schritt-für-Schritt-Anleitung zum Entfernen übermäßiger gegenseitiger Abhängigkeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!