Repactoring de suppression de la dépendance des amis
Dans le domaine du développement de logiciels, les déclarations d'amis peuvent introduire des problèmes de couplage et de maintenance étroits. Ce guide fournit une feuille de route détaillée pour refactoriser correctement une dépendance d'une amie, transformant votre base de code en une structure plus maintenable et résiliente.
Dévocant le besoin de refactorisation
Considérer le scénario suivant: Classa et classa ClassAccessor partagent une dépendance d'ami, l'octroi d'accès Classaacsseur Classaacressor pour les membres de la classe. Bien que cela puisse sembler pratique, il pose plusieurs inconvénients:
Étape 1: introduire une interface abstraite
Remplacez la déclaration d'amis par une dépendance à une classe intérieure, la division de la relation d'amis dans une dépendance directe et une dépendance à une classe appelée interface interne InternalInterface.
Étape 2: Déplacez les opérations vers l'interface
Identifiez les opérations constituant la dépendance des appels et déplacez-les de Classa à InternalInterface, en étendant Internalinterface avec un constructeur protégé et en marquant l'association de généralisation de la classe: Composants
classaaccessor a besoin d'une référence à InternalInterface. Implémentez une méthode supplémentaire, attachaccessor (), dans classa et utilisez-la pour transmettre une référence à InternalInterface à classaAccessor via setInternalinterfaceref (). Cette méthode sera appelée lorsque classa :: attachaccessor () est invoqué.
c implémentation
// Définition de classaAccessor classe ClassaAccessor { publique: ClassaAccessor (Classa & Classa); void setInternAlInterFaceRef (InternalInterface & NewValue); privé: InternalInterface * InternalInterFaceref; }; // Méthode pour définir la référence sur InternalInterface Classa :: attachaccessor (classaaccessor & accessor) { Accessor.SetInternAlinterFaceref (* this); }
Amplacement facultatif: introduisant une internalcienterface
pour découpler davantage l'implémentation, envisagez d'introduire une autre interneInterface en tant qu'intermédiaire entre Classa et classaAccessor. ÉTAPES, Vous pouvez refacter efficacement une dépendance d'ami, améliorer la stabilité du code, la maintenabilité et l'adhésion au codage des meilleures pratiques. N'oubliez pas d'évaluer soigneusement les inconvénients potentiels associés à cette approche avant de l'implémenter dans votre propre base de code.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3