以下文字部分均为本人自己的想法与总结所以未必正确;
代码摘自https://blog.csdn.net/rust94/article/details/88895465
适配器模式:
什么是适配器:适配器的存在,就是为了将已存在的东西(接口)转换成适合我们需要、能被我们所利用的东西。在现实生活中,适配器更多的是作为一个中间层来实现这种转换作用。比如电源适配器,它是用于电流变换(整流)的设备。
适配器模式的理念:适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
角色:
目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的(就是要适配成的新接口)
源(Adaptee)角色:需要进行适配的接口
适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类
个人理解:
适配器模式能在不改变源角色代码的情况下满足新的接口需求。比如多个数据接口需要新增相同字段的需求时,就可以使用适配器模式统一加上字段。
//目标角色
interface Targer
{
public function newMethod1();
public function newMethod2();
}
//需要被适配的类(Adaptee)
Class Dog
{
public function oldMethod1()
{
echo 'dog';
}
public function oldMethod2()
{
echo '汪汪汪...';
}
}
//需要被适配的类(Adaptee)
Class Cat
{
public function oldMethod1()
{
echo 'cat';
}
public function oldMethod2()
{
echo '喵喵喵...';
}
}
//适配器,
Class Adapter implements Targer
{
private $adaptee;
public function __construct($adaptee)
{
$this->adaptee = $adaptee;
}
public function newMethod1()
{
//以少量的代码对被适配者作出适配
echo 'name :';
$this->adaptee->oldMethod1();
}
public function newMethod2()
{
echo 'voice :';
$this->adaptee->oldMethod2();
}
}
$adapter = new Adapter(new Dog);
$adapter->newMethod1();