Clases finales en PHP, Java y otros lenguajes

¿Usar clases finales o no usar clases finales? Esa es la pregunta. Y también cuándo y cómo hacerlo bien.







Por qué utilizar clases finales



Minimizar el campo de visión



Cuando ve una clase con un prefijo final, comprende que esta clase no puede ser extendida por ninguna otra, lo que no solo la hace más legible, sino que también le permite estar seguro de que el alcance de la lógica se limita a esa clase en particular.



Fomentar un enfoque de composición sobre herencia 



El principio abierto / cerrado establece que una clase debe estar abierta para su extensión, pero cerrada para cambios.



Si por alguna razón (entendiendo bien la razón en sí) decide usar la herencia, simplemente elimine la palabra clave final y listo.



Si no puede extender la clase “por defecto” (porque es final), se está ayudando a sí mismo pensando en primer lugar en usar la composición en lugar de la herencia.



¿Por qué esta clase no es final?



Si nuestro objetivo es la composición en lugar de la herencia, entonces deberíamos intentar evitar la herencia tanto como sea posible y usarla solo cuando sea realmente necesario. La herencia OOP a menudo se usa incorrectamente.



Alucinaciones



Cuando estudiamos la programación orientada a objetos por primera vez, dimos un ejemplo clásico de herencia. Sin embargo, cuando Alan Kay creó Smalltalk, la herencia no era su concepto principal. El concepto principal era la mensajería, es decir, puede enviar mensajes a objetos y encapsulan datos y lógica. Puede cambiar su comportamiento utilizando varios objetos, que en realidad es composición. Pero al final, el concepto de herencia es tan popular que en última instancia eclipsa la composición.



Beneficios de usar clases finales



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




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


[ ]



  • .
  • .
  • Utilice la composición (a través de DI a través del constructor de clases) para unir las cosas y minimizar la complejidad.


Subtotal: Interfaces -> Clases finales -> Composición



All Articles