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