Maison > Article > développement back-end > Comment refactoriser une déclaration de dépendance « Ami » : un guide étape par étape pour supprimer les interdépendances excessives ?
On peut rencontrer un scénario dans lequel supprimer une dépendance « ami » entre deux classes est souhaité, notamment en raison de préoccupations concernant une interdépendance excessive, des problèmes de maintenance et des normes UML obsolètes.
Extraire les méthodes exposées par la classe « ami » et créer un nouvelle interface abstraite. Établissez une relation de dépendance de la classe « ami » vers l'interface et une dépendance « d'appel » de l'autre classe vers l'interface.
Déplacer les opérations qui constituent la dépendance "d'appel" de la classe dépendante à l'interface abstraite. Faites en sorte que l'interface étende un constructeur protégé à des fins d'héritage et masquez l'association de généralisation protégée entre la classe dépendante et l'interface.
Dans la dernière étape, créez une méthode dans la classe "friend" pour transmettre une référence de l'interface abstraite à la classe dépendante. Appelez cette méthode depuis la classe dépendante lors de l'initialisation pour établir la connexion nécessaire.
ClassA (fournisseur) :
<code class="cpp">class ClassA : protected InternalInterface { public: attachAccessor(ClassAAccessor &accessor) { accessor.setInternalInterfaceRef(*this); } };</code>
ClassAAccessor (ami) :
<code class="cpp">class ClassAAccessor { public: ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) { classA.attachAccessor(*this); } private: InternalInterface* internalInterfaceRef; };</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!