繼承與繼承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中文網其他相關文章!