編程中的那些套路——關於適配器模式

該文章屬於《編程中的那些經典套路——設計模式彙總》系列,而且如下內容基於語言PHPphp

今天咱們來談談適配器模式。編程

想象一個場景:json

有一個類方法它部署在服務器上,專門負責大多數語言都通用的JSON語言,而如今我須要調用這個類方法,但我不須要返回JSON格式的數據了,我要返回序列化後的數據,我如今如何處理呢?是上去服務器修改這個類方法嗎?這不科學吧?由於咱們本來編寫好的代碼最好就不要再改了,很容易形成風險的。(這也是也爲了遵循開放封閉原則)。segmentfault

如何處理呢?這時候就能夠引入適配器模式。設計模式

具體看代碼:服務器

適配器模式.php數據結構

<?php
 
class JsonData {
 
    public function show(){
 
        $array = array('風扇','書','檯燈');
 
        return json_encode($array);
 
    }
 
}
 
//序列化數據
 
class SerializeData extends JsonData{
 
    public function show(){
 
        $data = parent::show();
 
        $data = json_decode($data);
 
        return serialize($data);
 
    }
 
}
 
//對數據進行base64編碼
 
class Base64Data extends JsonData{
 
    public function show(){
 
        $data = parent::show();
 
        return base64_encode($data);
 
    }
 
}
 
//XML extends OriginalData ...
 
$data = new SerializeData();
 
print_r($data->show()); //輸出:a:3:{i:0;s:6:"風扇";i:1;s:3:"書";i:2;s:6:"檯燈";}
 
?>

適配器模式就是在原始數據上又包裝了一層,從而達到將原始數據轉成你所須要的格式。編碼

仔細想一想:設計

其實適配器模式和裝飾器模式有些相像,可是前者是改變數據結構(等),後者是裝飾內容(等).code

該文章屬於《編程中的那些經典套路——設計模式彙總》系列

相關文章
相關標籤/搜索