Cours finaux en PHP, Java et autres langages

Utiliser les classes finales ou ne pas utiliser les classes finales? Telle est la question. Et aussi quand et comment le faire correctement.







Pourquoi utiliser les classes finales



Minimisez le champ de vision



Lorsque vous voyez une classe avec un préfixe final, vous vous rendez compte que cette classe ne peut être étendue par aucune autre, ce qui non seulement la rend plus lisible, mais vous permet également de vous assurer que la portée de la logique est limitée à cette classe particulière.



Encourager une approche de composition sur héritage 



Le principe ouvert / fermé dit: une classe doit être ouverte pour extension, mais fermée pour changement.



Si pour une raison quelconque (bien comprendre la raison elle-même) vous décidez d'utiliser l'héritage, supprimez simplement le mot-clé final et vous avez terminé.



Si vous ne pouvez pas étendre la classe «par défaut» (car c'est définitif), vous vous aidez en pensant d'abord à utiliser la composition au lieu de l'héritage.



Pourquoi ce cours n'est-il pas final?



Si nous visons la composition plutôt que l'héritage, nous devrions essayer d'éviter autant que possible l'héritage et ne l'utiliser que lorsque cela est vraiment nécessaire. L'héritage POO est souvent mal utilisé.



Délires



Lorsque nous avons étudié la POO pour la première fois, nous avons donné un exemple classique d'héritage. Cependant, lorsque Alan Kay a créé Smalltalk, l'héritage n'était pas son concept principal. Le concept principal était la messagerie, c'est-à-dire que vous pouvez envoyer des messages aux objets et qu'ils encapsulent les données et la logique. Vous pouvez modifier leur comportement à l'aide de divers objets, qui sont en fait de la composition. Mais en fin de compte, le concept d'héritage est si populaire qu'il éclipse finalement la composition.



Avantages de l'utilisation des cours finaux



  • . .
  • . , .
  • . , .
  • . , . .
  • . .
  • . , , .
  • . .




  • , , .
  • , , . , . , , .


[ ]



  • .
  • .
  • Utilisez la composition (via DI via le constructeur de classe) pour garder les choses ensemble et minimiser la complexité.


Sous-total: Interfaces -> Classes finales -> Composition



All Articles