Heim > Backend-Entwicklung > PHP-Tutorial > Zusammensetzung vs. Vererbung

Zusammensetzung vs. Vererbung

Linda Hamilton
Freigeben: 2024-09-20 22:15:10
Original
1037 Leute haben es durchsucht

Composition vs. Inheritance

Vererbung vs. Komposition in PHP ?

Wenn wir objektorientiert programmieren, ist es wichtig, den Unterschied zwischen Vererbung und Komposition zu verstehen:

Vererbung
Eine Klasse erbt von einer anderen und verwendet und erweitert deren Verhalten.

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

class Carro extends Motor{}

$carro = new Carro();
$carro->ligar();
Nach dem Login kopieren

Komposition
Eine Klasse enthält Instanzen anderer Klassen, um Verantwortlichkeiten zu delegieren. Komposition wird oft bevorzugt, um flexiblere Systeme zu schaffen und Probleme mit tiefer Vererbung zu vermeiden.

Praxisbeispiel
Haben Sie jemals darüber nachgedacht, dass wir, wenn wir das Auto starten, tatsächlich auch den Motor starten? Dieser Überlegung folgend können wir zwei Objekte erstellen: eines mit dem Namen „Engine“ und eines mit dem Namen „Car“. Auf diese Weise enthält das Car-Objekt eine Instanz des Engine-Objekts, das für das Starten des Autos verantwortlich ist.

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

Nach dem Login kopieren

Verstehen
Anstatt dass die Car-Klasse die Logik zum Starten der Engine direkt integriert hat, delegiert sie diese Verantwortung an ein Engine-Objekt. Dadurch bleibt die Car-Klasse auf das konzentriert, was sie tun soll, wodurch der Code modularer und einfacher zu warten ist. In Zukunft können Sie den Motor ändern oder verbessern, ohne den Fahrzeugklassencode zu ändern.

Testen

$motorV4 = new Motor();
$carro = new Carro($motorV4);
echo $carro->ligar(); // Saída: Motor Ligado!
Nach dem Login kopieren

Vorteile
Dieser Ansatz ist flexibler, da er es ermöglicht, dass das Auto über verschiedene Motortypen verfügt (z. B. einen V4-, V6- oder Elektromotor), ohne dass die Fahrzeugklasse geändert werden muss. Diese Modularität erleichtert die Wartung und Erweiterung des Systems.

Das obige ist der detaillierte Inhalt vonZusammensetzung vs. Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage