91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP設計模式之適配器模式

發布時間:2020-07-15 07:49:36 來源:網絡 閱讀:1128 作者:AndyMac 欄目:web開發

index.php

<?php
//適配器模式
//適配器模式只是將某個對象的接口適配為另一個對象所期望的接口
//PHP適配器模式原理,先創建目標實現方法,然后通過適配器類來連接原功能和目標方法,來實現功能的擴展.
function __autoload($filename){
    include_once 'class/'.$filename.'.class.php';
}
/*
 * 原來的功能中只有輸出錯誤到控制臺,但是后來要求增加一個輸出錯誤到csv中,方便記錄,在不更改基類的情況加,通過適配器模式,繼承原來得錯誤類,
 * 并且擴展到適配器中,更改代碼,實現輸出到csv中.而且也不影響原來輸出到控制臺中.實現功能的擴展.
 */
//注釋代碼模仿原來的錯誤輸出功能
//$error=new errorObject("404:Not Found");
// $log=new logToConsole($error);
// $log->write();
//【主要角色】
//目標(Target)角色:定義客戶端使用的與特定領域相關的接口,這也就是我們所期待得到的
//源(Adaptee)角色:需要進行適配的接口
//適配器(Adapter)角色:對Adaptee的接口與Target接口進行適配;適配器是本模式的核心,適配器把源接口轉換成目標接口,此角色為具體類
//使用場景
//1、你想使用一個已經存在的類,而它的接口不符合你的需求
//2、你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作
//3、你想使用一個已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口(僅限于對象適配器)
//以下為增加新的功能
$error=new logToCSVAdapter("404:Not Found");
$log=new logToCSV($error);
$log->write();
?>


原始功能類

errorObject.class.php

<?php
/*
 * 錯誤基類
 */
class errorObject{
    private $_error;
    function __construct($error){
        $this->_error=$error;
    }
                                                                                                                                 
    function getError(){
        return $this->_error;
    }
}
?>


logToConsole.class.php

<?php
/*
 * 輸出到控制臺,原始錯誤執行代碼
 */
class logToConsole{
    private $_errorObject;
    function __construct($o){
        $this->_errorObject=$o;
    }
                                                                                                                       
    function write(){
        fwrite(STDERR, $this->_errorObject->getError());
    }
}
?>


以上就是原來的功能,將指定的錯誤輸出到控制臺顯示出來.現在的需求是擴展一個寫入CSV文件中得功能.在不改變原來的功能的情況下.擴展功能


logToCSV.class.php


<?php
/*
 * 輸出錯誤到csv文件
 */
class logToCSV{
    const CSV_LOCATION='log.csv';
    private $_errorObject;
                                                                                              
    function __construct($o){
        $this->_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

<?php
/*
 * 擴展錯誤類,并且增加新的功能來支持logToCSV類中的方法
 */
class logToCSVAdapter extends errorObject{
    private $_errorNumber,$_errorText;
      
    function __construct($error){
        //繼承父類的初始化.并且增加新的方法.
        parent::__construct($error);
        $parts=explode(":", $error);
        $this->_errorNumber=$parts[0];
        $this->_errorText=$parts[1];
    }
      
    function getErrorNumber(){
        return $this->_errorNumber;
    }
      
    function getErrorText(){
        return $this->_errorText;
    }
}
?>

PHP設計模式之適配器模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安达市| 景东| 盐亭县| 榕江县| 贵溪市| 北辰区| 威海市| 称多县| 姜堰市| 枝江市| 四川省| 平塘县| 太白县| 锡林郭勒盟| 谷城县| 定边县| 蒙山县| 三亚市| 巧家县| 镇雄县| 龙南县| 无为县| 磴口县| 澄江县| 天全县| 云和县| 右玉县| 武定县| 南平市| 灵台县| 孝昌县| 曲水县| 页游| 老河口市| 铜川市| 台州市| 英德市| 搜索| 泰来县| 盐津县| 关岭|