该文章属于《编程中的那些经典套路——设计模式汇总》系列,而且如下内容基于语言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