Herencia vs. Composición en PHP ?
Cuando programamos orientado a objetos, es importante entender la diferencia entre Herencia y Composición:
Herencia
Una clase hereda de otra, reutilizando y extendiendo su comportamiento.
class Motor { public function ligar() { return "Motor Ligado!"; } } class Carro extends Motor{} $carro = new Carro(); $carro->ligar();
Composición
Una clase contiene instancias de otras clases para delegar responsabilidades. A menudo se prefiere la composición para crear sistemas más flexibles y evitar problemas con la herencia profunda.
Ejemplo práctico
¿Alguna vez te has parado a pensar que cuando arrancamos el coche, en realidad estamos arrancando el motor? Siguiendo este razonamiento, podemos crear dos objetos: uno llamado Motor y otro llamado Coche. De esta manera, el objeto Car contendrá una instancia del objeto Engine, que será responsable de arrancar el auto.
Código
class Motor { public function ligar() { return "Motor Ligado!"; } } class Carro { private Motor $motor; public function __construct(Motor $motor) { $this->motor = $motor; } public function ligar() { return $this->motor->ligar(); } }
Comprensión
En lugar de que la clase Car tenga la lógica para arrancar el motor directamente integrada, delega esta responsabilidad a un objeto Engine. Esto mantiene a la clase Car enfocada en lo que se supone que debe hacer, haciendo que el código sea más modular y más fácil de mantener. En el futuro, podrás cambiar o mejorar el motor sin modificar el código de clase de Auto.
Pruebas
$motorV4 = new Motor(); $carro = new Carro($motorV4); echo $carro->ligar(); // Saída: Motor Ligado!
Ventajas
Este enfoque es más flexible porque permite que el automóvil tenga diferentes tipos de motor (por ejemplo, un V4, V6 o un motor eléctrico) sin tener que cambiar la clase de automóvil. Esta modularidad facilita el mantenimiento y la expansión del sistema.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3