前言:
我们说完了行为型设计模式,今天开始聊结构型设计模式—适配器模式。
内容概要:
1、什么是适配器模式
2、UML图
3、PHP代码示例
一、什么是适配器模式
在php实际编码时,适配器模式还是使用的比较多的。它通过接口的适配(限制),使得原本不能一起工作的类或者对象可以在一起工作。
举个例子:火车站里的手机充电站就是一个适配器,它可以将不同型号的手机放在一起充电。
适配器模式包括三个角色:
1、目标接口(Target):规定适配器能完成哪些手机充电,一般是接口形式或者抽象类的形式。
2、需要适配的类(Adaptee):类似不同手机的充电功能。
3、适配器(Adapter):类似充电站的手机充电线,有不同的接口适配。
适配器模式可以分为类适配器模式和对象适配器模式,我们这里拿对象适配器做例子。
二、UML图
UML图片来源于网上,老笔记中的,现在不知出处了。
出处不明,致谢图片原作者
三、PHP代码示例
我们这里拿手机充电站的例子,使用php描述出来适配器模式。
<?php
/************************************************************
** @Description: PHP设计模式之适配器模式
** @Author: haodaquan
** @Date: 2017-03-23 13:28:27
** @Last Modified by: haodaquan
** @Last Modified time: 2017-03-24 13:08:48
*************************************************************/
#充电站接口
interface IchargerStation{
public function charging(); #老充电方法
public function newCharging();#新充电方法
}
#手机接口
interface Icharger{
public function charging();
}
#苹果手机类
class Ios{
public function charging() {
echo '苹果手机充电老方法<br/>';
}
}
#华为手机类
class Huawei{
public function charging() {
echo '华为手机充电老方法<br/>';
}
}
#充电站类
class ChargingStation implements IchargerStation{
private $station;
public function __construct($phoneType){
$this->station = $phoneType;
}
public function charging() {
$this->station->charging();
}
public function newCharging() {
echo '手机充电站新方法<br/>';
}
}
#创建一个充电站实例
$adapter = new ChargingStation(new Huawei());
$adapter->charging();
$adapter->newCharging();
exit();
显示结果
华为手机充电老方法
手机充电站新方法
在PHP实际应用中,数据库连接常用适配器模式。