本文實例講述了PHP面向?qū)ο蟪绦蛟O(shè)計之多態(tài)性的應(yīng)用。分享給大家供大家參考,具體如下:
多態(tài)是面向?qū)ο蟮娜筇匦灾谐庋b和繼承之外的另一重要特性。它展現(xiàn)了動態(tài)綁定的功能,也稱為“同名異式”。多態(tài)的功能可讓軟件在開發(fā)和維護時,達到充分的延伸性。事實上,多態(tài)最直接的定義是讓具有繼承關(guān)系的不同類對象,可以對相同名稱的成員函數(shù)調(diào)用,產(chǎn)生不同反應(yīng)效果。所謂多態(tài)性就是指一段程序能夠處理多種類型對象的能力,在PHP中,多態(tài)值指的就是方法的重寫。方法重寫是指一個子類中可以重新修改父類中的某些方法,使其具有自己的特征。重寫要求子類的方法和父類的方法名稱相同,這可以通過聲明抽象類或是接口來規(guī)范。
我們通過計算機USB設(shè)備的應(yīng)用來介紹一下面向?qū)ο笾械亩鄳B(tài)性,目前USB設(shè)置的種類僅我們自己用過的我想就有十幾種吧。例如USB鼠標(biāo)、USB鍵盤、USB存儲設(shè)備等,這些計算機的外部設(shè)備都是通過USB接口連接到計算機以后,被計算機調(diào)用并啟動運行的。也就是計算機正常運行的同時,沒插入一種不同USB設(shè)備,就為計算機擴展一樣功能,這正是我們所說的多態(tài)特征。那么為什么每個USB設(shè)備不一樣,但都可以被計算機應(yīng)用呢?那是因為每個USB設(shè)置都要遵守電腦USB接口的開發(fā)規(guī)范,都具有相同的能被計算機加載到并啟用的方法,但運行各自相應(yīng)的功能。這也正是我們對多態(tài)的定義,假設(shè)我們有一個主程序已經(jīng)開發(fā)完成,需要后期由其他開發(fā)人員為其擴展一些功能,但需要在不改動主程序的基礎(chǔ)上就可以加載到這些擴展的功能模塊,其實也就是為程序開發(fā)一些插件。這就需要在主程序中需要為擴展的插件程序?qū)懞媒涌谝?guī)范,然后每個插件只有按照規(guī)范去實現(xiàn)自己的功能,才能被主程序應(yīng)用到。在計算機中應(yīng)用USB設(shè)備的程序設(shè)計如下所示:
?php
//定義一個iUSB接口,讓每個USB設(shè)備都遵守這個規(guī)范
interface iUSB{
function run();
}
class Computer{
//計算機類中的一個方法可以應(yīng)用任何一種USB設(shè)備
function useUSB($usb){
$usb->run();
}
}
?>
下面的代碼根據(jù)USB接口定義的規(guī)范,實現(xiàn)了USB鍵盤、USB鼠標(biāo)和USB存儲三個設(shè)備,當(dāng)然可以去實現(xiàn)更多的USB設(shè)置,都按照自己設(shè)備的功能重寫了run()
方法,所以插入計算機啟動運行后每個USB設(shè)備都有自己的形態(tài)。代碼如下所示:
?php
//擴展一個USB鍵盤設(shè)備,實現(xiàn)usb接口
class Ukey implements iUSB {
function run(){
echo "運行USB鍵盤設(shè)備br>";
}
}
//擴展一個USB鼠標(biāo)設(shè)備,實現(xiàn)usb接口
class Umouse implements iUSB {
function run(){
echo "運行USB鼠標(biāo)設(shè)備br>";
}
}
//擴展一個USB存儲設(shè)備,實現(xiàn)usb接口
class Ustore implements iUSB {
function run(){
echo "運行USB存儲設(shè)備br>";
}
}
$computer =new Computer;
$computer ->useUSB(new Ukey()); //為計算機插入一個usb鍵盤設(shè)備,并運行
$computer ->useUSB(new Umouse()); //為計算機插入一個usb鼠標(biāo)設(shè)備,并運行
$computer ->useUSB(new Ustore()); //為計算機插入一個usb存儲設(shè)備,并運行
?>
運行輸出:
運行USB鍵盤設(shè)備
運行USB鼠標(biāo)設(shè)備
運行USB存儲設(shè)備
PS:代碼較原文有所修改,已調(diào)試運行無誤~
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
您可能感興趣的文章:- PHP面向?qū)ο蟪绦蛟O(shè)計繼承用法簡單示例
- PHP面向?qū)ο蟪绦蛟O(shè)計(OOP)之方法重寫(override)操作示例
- PHP面向?qū)ο蟪绦蛟O(shè)計之接口的繼承定義與用法詳解
- php面試中關(guān)于面向?qū)ο蟮南嚓P(guān)問題