Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Komposisi lwn Warisan

Komposisi lwn Warisan

Linda Hamilton
Linda Hamiltonasal
2024-09-20 22:15:101013semak imbas

Composition vs. Inheritance

Warisan lwn. Komposisi dalam PHP ?

Apabila kita memprogram berorientasikan objek, adalah penting untuk memahami perbezaan antara Warisan dan Komposisi:

Warisan
Satu kelas mewarisi daripada kelas yang lain, menggunakan semula dan melanjutkan tingkah lakunya.

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

class Carro extends Motor{}

$carro = new Carro();
$carro->ligar();

Komposisi
Kelas mengandungi contoh kelas lain untuk mewakilkan tanggungjawab. Komposisi sering diutamakan untuk mencipta sistem yang lebih fleksibel dan mengelakkan masalah dengan pewarisan mendalam.

Contoh Praktikal
Pernahkah anda berhenti untuk berfikir bahawa apabila kita menghidupkan kereta, kita sebenarnya menghidupkan enjin? Berikutan alasan ini, kita boleh mencipta dua objek: satu dipanggil Enjin dan satu lagi dipanggil Kereta. Dengan cara ini, objek Kereta akan mengandungi contoh objek Enjin, yang akan bertanggungjawab untuk menghidupkan kereta.

Kod

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

Pemahaman
Daripada kelas Kereta yang mempunyai logik untuk menghidupkan enjin yang dibina secara langsung, ia mewakilkan tanggungjawab ini kepada objek Enjin. Ini memastikan kelas Kereta fokus pada perkara yang sepatutnya dilakukan, menjadikan kod lebih modular dan lebih mudah diselenggara. Pada masa hadapan, anda boleh menukar atau menambah baik enjin tanpa mengubah suai kod kelas Kereta.

Ujian

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

Kelebihan
Pendekatan ini lebih fleksibel kerana ia membolehkan kereta mempunyai jenis enjin yang berbeza (contohnya, enjin V4, V6 atau elektrik) tanpa perlu menukar kelas Kereta. Modulariti ini memudahkan penyelenggaraan dan pengembangan sistem.

Atas ialah kandungan terperinci Komposisi lwn Warisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah Xdebug itu?Artikel seterusnya:Apakah Xdebug itu?