Composition vs héritage

Linda Hamilton
Libérer: 2024-09-20 22:15:10
original
901 Les gens l'ont consulté

Composition vs. Inheritance

Héritage vs. Composition en PHP ?

Lorsque nous programmons orienté objet, il est important de comprendre la différence entre l'héritage et la composition :

Héritage
Une classe hérite d'une autre, réutilisant et étendant son comportement.

class Motor
{
    public function ligar()
    {
        return "Motor Ligado!";
    }
}

class Carro extends Motor{}

$carro = new Carro();
$carro->ligar();
Copier après la connexion

Composition
Une classe contient des instances d'autres classes pour déléguer des responsabilités. La composition est souvent préférée pour créer des systèmes plus flexibles et éviter les problèmes d'héritage profond.

Exemple pratique
Avez-vous déjà pensé que lorsque nous démarrons la voiture, nous démarrons réellement le moteur ? En suivant ce raisonnement, nous pouvons créer deux objets : un appelé Engine et un autre appelé Car. De cette façon, l'objet Car contiendra une instance de l'objet Engine, qui sera responsable du démarrage de la voiture.

Code

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();
    }
}

Copier après la connexion

Compréhension
Au lieu que la classe Car ait la logique de démarrage du moteur directement intégrée, elle délègue cette responsabilité à un objet Engine. Cela permet à la classe Car de se concentrer sur ce qu'elle est censée faire, rendant le code plus modulaire et plus facile à maintenir. À l'avenir, vous pourrez changer ou améliorer le moteur sans modifier le code de classe de voiture.

Tests

$motorV4 = new Motor();
$carro = new Carro($motorV4);
echo $carro->ligar(); // Saída: Motor Ligado!
Copier après la connexion

Avantages
Cette approche est plus flexible car elle permet à la voiture d'avoir différents types de moteurs (par exemple, un V4, un V6 ou un moteur électrique) sans avoir à changer de classe de voiture. Cette modularité facilite la maintenance et l'expansion du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!