Je sais que c'est le but de l'interface et de la classe peut être déclaré abstrait pour y échapper. p>
mais existe-t-il une utilisation pour la mise en œuvre de toutes les méthodes que nous déclarons dans une interface? Cela n'augmentera-t-il pas le poids et la complexité du code si nous continuons à définir toutes les méthodes, même il n'est pas pertinent pour cette classe? pourquoi il est conçu alors? p>
6 Réponses :
Ce que vous critiquez est exactement l'interface d'objectif réalisée. Si vous ne souhaitez pas implémenter une interface, ne déclarez pas votre classe la mise en œuvre. P>
ne plus augmenter le poids et la complexité du code si nous Continuez à définir toutes les méthodes même si elle n'est pas pertinente pour cela classe? p> blockQuote>
Lorsque vous programmez contre une interface, vous souhaitez que l'objet concret derrière elle doit mettre en œuvre toutes ses méthodes. Si votre objet concret n'a pas besoin ou ne peut pas implémenter toute la méthode d'interface, vous avez probablement un problème de conception à réparer. P>
Lorsque tout élément de code reçoit une instance d'une interface sans savoir quelle classe est derrière elle, ce morceau de code doit être assuré de la possibilité d'appeler n'importe quelle méthode dans une interface. C'est ce qui rend une interface un contrat entre les appelants et les fournisseurs de la fonctionnalité. Le seul moyen de réaliser que toutes les classes non abstraites mettent en œuvre l'interface pour fournir des implémentations pour toutes ses fonctions.
Il existe deux moyens généraux de faire face à la nécessité de ne pas mettre en œuvre certaines des fonctionnalités: P>
non pris en chargeOrexception code> et li>
- fractionnement de votre interface selon les besoins en parties afin que toute la méthode d'une pièce puisse être mise en œuvre. LI>
ul>
Voici un exemple de la première approche: p> xxx pré> Voici un exemple de la deuxième approche: p> xxx Pré> p>
Je peux comprendre, mais mes pensées sont la raison pour laquelle il est fait pour travailler, donc à Java, comme celui-ci pour implémenter toutes les méthodes d'une interface? Sera très rempli si vous pouvez citer un exemple de temps réel. Comme vous le feriez savoir à cette époque, je suis un débutant
@Deepak Si vous recherchez un exemple de vie réel d'une interface avec des méthodes facultatives, java Liste code> interface. Il dispose de dix opérations facultatives qui modifient la liste, en plus de toutes les opérations d'examen du contenu de la liste.
Cela peut dépendre de Principe de substitution de Liskov P>
Donc, avoir Veuillez garder à l'esprit que le mien n'est pas une réponse «appropriée», car elle n'est pas basée sur des sources officielles! P> un outil B code> signifie que vous pouvez utiliser A code> lorsque B code> est nécessaire et pour le faire fonctionner sans problèmes, < Code> A code> doit avoir au moins les mêmes méthodes de B code>. p>
ne plus augmenter le poids et la complexité du code si nous Continuez à définir toutes les méthodes même si elle n'est pas pertinente pour cela classer? p> blockQuote>
Oui, vous avez raison, ça va. C'est pourquoi c'est
la meilleure pratique em> strong> dans votre codage pour suivre le Principe de ségrégation d'interface qui recommande de ne pas forcer les clients à implémenter des interfaces em> qu'ils n'utilisent pas. Donc, vous ne devriez jamais avoir une interface "graisse" avec de nombreuses méthodes, mais beaucoup petites interfaces em> méthodes de regroupement em>, chaque groupe servant un comportement ou un sous-module spécifique.
De cette façon, les clients d'une interface impliquent uniquement les méthodes nécessaires sans jamais être forcée à mettre en œuvre des méthodes dont ils n'ont pas besoin. p>
L'idée d'une interface dans Java ressemble beaucoup à un contrat em> (et peut-être vu rétrospectivement que cela aurait dû être le nom du concept) P>
L'idée est que la classe mise en œuvre em> l'interface Dans mon expérience, cette installation est l'une des choses qui permet de construire des cathédrales en Java. P>
Lors de la mise en oeuvre d'une interface, nous n'avons peut-être pas besoin de définir toute la méthode déclarée dans l'interface.Nous pouvons définir certaines méthodes, que nous n'avons pas besoin, sans rien à l'intérieur du corps. P>
Quel serait le point de l'interface autrement?
Parfois, il existe une raison légitime de ne pas mettre en œuvre toutes les méthodes, voir Eventadapters