对外统一,将一些截然不同的函数接口封装成统一的api,最简单的例子就是DB类了,有mysql,pdo,项目中同时有几种数据库存在,因为有各自的api,所以适配器模式是将几种不同的数库封装成统一的api,对外就是统一的方式调用<br />各自的api 接口名称不一样,通过适配器模式,统一成一个名称,对然调用一致<br />很经典的例子,插座,电压不一样,电源适配器,跟适配器模式差不多,不符合要求,加个适配器<br />将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本接口不兼容的而不能一起工作的类,一起工作
//基本的发短信类class Message{    public function send(){        echo "阿里云发送短信!" . PHP_EOL;    }    public function push(){        echo "阿里云发送推送!" . PHP_EOL;    }}//接口不一致的极光类class JiguangMessage{    public function send_out_msg(){        echo "极光发送短信!" . PHP_EOL;    }    public function push_msg(){        echo "极光发送推送!" . PHP_EOL;    }}//适配器极光,统一接口名称class JiguangSDKAdapter extends Message{    private $message;    public function __construct($message){        $this->message = $message;    }    public function send(){        $this->message->send_out_msg();    }    public function push(){        $this->message->push_msg();    }}//接口不一致百度云类class BaiduYunMessage{    public function transmission_msg(){        echo "百度云发送短信!" . PHP_EOL;    }    public function transmission_push(){        echo "百度云发送推送!" . PHP_EOL;    }}//适配器百度云,统一接口名称class BaiduYunSDKAdapter extends Message{    private $message;    public function __construct($message){        $this->message = $message;    }    public function send(){        $this->message->transmission_msg();    }    public function push(){        $this->message->transmission_push();    }}$jiguangMessage = new JiguangMessage();$baiduYunMessage = new BaiduYunMessage();$message = new Message();// 原来的老系统发短信,使用阿里云$message->send();$message->push();// 部分模块用极光发吧$jgAdatper = new JiguangSDKAdapter($jiguangMessage);$jgAdatper->send();$jgAdatper->push();// 部分模块用百度云发吧$bdAatper = new BaiduYunSDKAdapter($baiduYunMessage);$bdAatper->send();$bdAatper->push();
适配器主要是维护一个外部对象,很少去增加功能,一般是直接替换,