data-id="1190000005068760" data-license="cc">
原文位址:PHP設計模式(五):多態性
Introduction
在PHP設計模式(利用extends來進行程式設計的方法。
在PHP設計模式(二):抽象類別和介面中我們介紹了接口,事實上也存在利用interface的程式設計方法,那就是多態。
和C/C++,Java,Python等語言一樣,PHP也支援多型。多態更多是一種物件導向程式設計的概念,讓同一類別物件執行同一個接口,但卻實現不同的邏輯功能。
多態性/Polymorphism
還是用動物、鯨魚和鯉魚來舉例:
<code><?php interface IEat { function eatFish(); function eatMoss(); } class Whale implements IEat { public function eatFish() { echo "Whale eats fish.\n"; } public function eatMoss() { echo "Whale doesn't eat fish\n"; } } class Carp implements IEat { public function eatFish() { echo "Carp doesn't eat moss.\n"; } public function eatMoss() { echo "Carp eats moss.\n"; } } $whale = new Whale(); $whale->eatFish(); $whale->eatMoss(); $carp = new Carp(); $carp->eatFish(); $carp->eatMoss(); ?></code>
運行一下:
<code>$ php Inheritance.php Whale eats fish. Whale doesn't eat fish. Carp eats moss. Carp doesn't eat moss.</code>
注意PHP的函數定義不包含回傳值,因此傳回不同類型的資料介面實作不同類型的資料介面實作。這一點和C/C++,Java等語言是不同的。此外,傳回不同類型的數據,甚至不回傳結果,對程式設計來說,會額外增加維護成本,已經和使用介面的初衷不同了(介面為了封裝實現,而不同的回傳值事實上是需要呼叫者去理解實現的)。
Summary
合理利用多態對介面進行不同的實現,簡化你的程式設計模型,讓程式碼易於維護。
以上就介紹了PHP設計模式五:多態,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。