【适用性】
1、你想使用一个已经存在的类,而它的接口不符合你的需求
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)
//适配器模式
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 '手机站新充电方法';
}
}
$adapter = new ChargingStation(new Ios());
$adapter->charging();
$adapter->newCharging();