Herança vs. Composição em PHP ?
Quando programamos orientados a objetos, é importante entender a diferença entre Herança e Composição:
Herança
Uma classe herda de outra, reutilizando e estendendo seu comportamento.
class Motor { public function ligar() { return "Motor Ligado!"; } } class Carro extends Motor{} $carro = new Carro(); $carro->ligar();
Composição
Uma classe contém instâncias de outras classes para delegar responsabilidades. Muitas vezes, a composição é preferida para criar sistemas mais flexíveis e evitar problemas com herança profunda.
Exemplo Prático
Já parou para pensar que, quando ligamos o carro, estamos na verdade ligando o motor? Seguindo esse raciocínio, podemos criar dois objetos: um chamado Motor e outro chamado Carro. Dessa forma, o objeto Carro conterá uma instância do objeto Motor, que será responsável por ligar o carro.
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(); } }
Entendendo
Em vez de a classe Carro ter a lógica de ligar o motor embutida diretamente, ela delega essa responsabilidade a um objeto Motor. Isso mantém a classe Carro focada apenas no que ela deve fazer, tornando o código mais modular e fácil de manter. No futuro, você pode alterar ou melhorar o motor sem modificar o código da classe Carro.
Testando
$motorV4 = new Motor(); $carro = new Carro($motorV4); echo $carro->ligar(); // Saída: Motor Ligado!
Vantagens
Essa abordagem é mais flexível porque permite que o carro tenha diferentes tipos de motor (por exemplo, um motor V4, V6 ou elétrico), sem precisar mudar a classe Carro. Essa modularidade facilita a manutenção e a expansão do sistema.
以上是Composition vs. Inheritance的详细内容。更多信息请关注PHP中文网其他相关文章!