首頁  >  文章  >  後端開發  >  組合與繼承

組合與繼承

Linda Hamilton
Linda Hamilton原創
2024-09-20 22:15:101013瀏覽

Composition vs. Inheritance

繼承與繼承PHP 中的組合 ?

當我們物件導向程式設計時,理解繼承和組合之間的差異很重要:

繼承
一個類別繼承另一個類,重複使用並擴展其行為。

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

class Carro extends Motor{}

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

構圖
一個類別包含其他類別的實例來委派職責。通常首選組合來創建更靈活的系統並避免深度繼承問題。

實際範例
您是否曾經停下來想一想,當我們啟動汽車時,我們實際上是在啟動引擎?按照這個推理,我們可以創建兩個物件:一個稱為 Engine,另一個稱為 Car。這樣,Car 物件將包含 Engine 物件的實例,它將負責啟動汽車。

代碼

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

理解
Car 類別沒有直接內建啟動引擎的邏輯,而是將此責任委託給 Engine 物件。這使得 Car 類別專注於它應該做的事情,使程式碼更加模組化並且更易於維護。將來,您可以在不修改 Car 類別程式碼的情況下更改或改進引擎。

檢定

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

優點
這種方法更加靈活,因為它允許汽車具有不同的引擎類型(例如,V4、V6 或電動引擎),而無需更改 Car 類別。這種模組化便於系統維護和擴充。

以上是組合與繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn