這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)PHP中適配器模式的使用,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括詔安網(wǎng)站建設(shè)、詔安網(wǎng)站制作、詔安網(wǎng)頁(yè)制作以及詔安網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,詔安網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到詔安省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
假如需要去國(guó)外旅游,游玩,現(xiàn)在電子產(chǎn)品很豐富,但是每個(gè)電子產(chǎn)品都是需要電源來(lái)做驅(qū)動(dòng),手機(jī),電腦,相機(jī)。。。但是又有一個(gè)很顯示的問(wèn)題,電子產(chǎn)品是
很消耗電量的,電量沒(méi)有了,就需要充電,在我們國(guó)家,我們買(mǎi)的電子產(chǎn)品出場(chǎng)帶的電源充電器,一般都是220V的電壓,但是世界很大,每個(gè)國(guó)家的要求(規(guī)定)
又是不同的,比如美國(guó)就是120V
將一個(gè)類(lèi)的接口轉(zhuǎn)換為另外一種接口,讓原本接口不兼容的類(lèi)可以兼容。
用戶調(diào)用適配器轉(zhuǎn)化出來(lái)的目標(biāo)接口方法,適配器再去調(diào)用被適配者的相關(guān)接口方法
用戶是看不到被適配者,屬于解耦的操作
適配器模式屬于結(jié)構(gòu)型的設(shè)計(jì)模式
適配器模式的三種實(shí)現(xiàn)方式:
一、 類(lèi)適配器
根據(jù)上面的UML圖,我們可以看出,需要一個(gè)美國(guó)電壓的接口UsaInterface
,一個(gè)適配器類(lèi)Adapter
,一個(gè)中國(guó)電壓的接口Chine
,一個(gè)使用者Computer
,
在這里,中國(guó)電壓就是被適配者,美國(guó)電壓是最后的輸出(目標(biāo)),就是是配置者
interface UsaInterface{ public function outPut5V();}class China{ private $voltage = 220; public function outPut220V() { return $this->voltage; }}class Adapter extends China implements UsaInterface{ public function outPut5V() { // TODO: Implement outPut5V() method. $chinaVoltage = $this->outPut220V(); return $chinaVoltage / 2 + 10 . "V"; }}class Computer{ public function index(UsaInterface $usa) { if ($usa->outPut5V() === "120V") { printf("可以在美國(guó)使用中國(guó)的電源插頭給電腦充電了"); } else { printf("不可以在美國(guó)使用中國(guó)的電源插頭給電腦充電了"); } }}class Client{ public function __construct() { $adapter = new Adapter(); $computer = new Computer(); $computer->index($adapter); }}
二、對(duì)象適配器模式
對(duì)象適配器其實(shí)就是在類(lèi)適配器的模式上做了一個(gè)調(diào)整,讓適配器類(lèi)Adapter
不去繼承被適配者的類(lèi),而是讓它們組合在一起,這樣就可以增加了使用的靈活
度,也不會(huì)暴露被適配者的很多方法(使用關(guān)聯(lián)關(guān)系來(lái)代替繼承關(guān)系【合成復(fù)用原則】)。同時(shí),沒(méi)有繼承就沒(méi)有辦法去覆蓋父類(lèi)的方法重寫(xiě)了,也算是有好有壞吧。如下:
class Adapter implements UsaInterface{ protected $china; public function __construct(China $china) { $this->china = $china; } public function outPut5V() { // TODO: Implement outPut5V() method. $chinaVoltage = $this->china->outPut220V(); return $chinaVoltage / 2 + 10 . "V"; }}
三、接口適配器(缺省適配器模式)
當(dāng)不需要全部實(shí)現(xiàn)接口提供的方法時(shí),可以先設(shè)計(jì)一個(gè)抽象類(lèi)實(shí)現(xiàn)接口,并為接口提供默認(rèn)的的空方法實(shí)現(xiàn),那么改抽象類(lèi)的子方法就可以有選擇的覆蓋父類(lèi)的某
些方法來(lái)實(shí)現(xiàn)需求,(適用于一個(gè)接口不想使用所有的方法的情況)
上述就是小編為大家分享的PHP中適配器模式的使用了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱(chēng):PHP中適配器模式的使用
瀏覽地址:http://chinadenli.net/article18/ihpcgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、網(wǎng)站內(nèi)鏈、ChatGPT、電子商務(wù)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)