index.php
創(chuàng)新互聯(lián)建站是一家以網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、品牌設(shè)計、軟件運維、成都網(wǎng)站推廣、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網(wǎng)公司。已累計為成都酒店設(shè)計等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
write(); //【主要角色】 //目標(Target)角色:定義客戶端使用的與特定領(lǐng)域相關(guān)的接口,這也就是我們所期待得到的 //源(Adaptee)角色:需要進行適配的接口 //適配器(Adapter)角色:對Adaptee的接口與Target接口進行適配;適配器是本模式的核心,適配器把源接口轉(zhuǎn)換成目標接口,此角色為具體類 //使用場景 //1、你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求 //2、你想創(chuàng)建一個可以復(fù)用的類,該類可以與其他不相關(guān)的類或不可預(yù)見的類協(xié)同工作 //3、你想使用一個已經(jīng)存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口(僅限于對象適配器) //以下為增加新的功能 $error=new logToCSVAdapter("404:Not Found"); $log=new logToCSV($error); $log->write(); ?>
原始功能類
errorObject.class.php
_error=$error; } function getError(){ return $this->_error; } } ?>
logToConsole.class.php
_errorObject=$o; } function write(){ fwrite(STDERR, $this->_errorObject->getError()); } } ?>
以上就是原來的功能,將指定的錯誤輸出到控制臺顯示出來.現(xiàn)在的需求是擴展一個寫入CSV文件中得功能.在不改變原來的功能的情況下.擴展功能
logToCSV.class.php
_errorObject=$o; } function write(){ $line=$this->_errorObject->getErrorNumber(); $line.=','; $line.=$this->_errorObject->getErrorText(); $line.="\n"; file_put_contents(self::CSV_LOCATION, $line,FILE_APPEND); } } ?>
接下來要做的就是將新得logToCSV方法和原來寫得errorObject連接起來使用,兩種方法,可以更改原來得errorObject類,或者是使用適配器模式,新增一個基類,來重寫原來的功能
logToCSVAdapter.class.php
_errorNumber=$parts[0]; $this->_errorText=$parts[1]; } function getErrorNumber(){ return $this->_errorNumber; } function getErrorText(){ return $this->_errorText; } } ?>