Composition over Inheritance
La composición sobre la herencia aconseja construir comportamiento conteniendo otros objetos en lugar de heredar, evitando clases base frágiles y cadenas de herencia profundas.
Propósito
Diseñar relaciones de objetos flexibles y mantenibles y evitar el acoplamiento y fragilidad de la herencia.
Mecanismo
Se prefiere una relación has-a (composición) a una relación is-a (herencia). La composición permite intercambiar componentes en tiempo de ejecución, mientras que la herencia queda fijada en tiempo de compilación. Los patrones strategy y decorator usan composición. Las interfaces más composición logran polimorfismo sin herencia.
Casos de uso
- Diseño orientado a objetos
- Patrones de diseño
- Arquitectura de código