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