繼承與繼承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 類別。這種模組化有利於系統維護和擴展。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3