- 维基百科
- laravel 学院-
- 作用
将一个类的接口,转换成客户端希望的另外一个接口,适配器模式使原本由于接口不兼容而不能一起工作的类可以一起工作了。 - 使用场景 比如你使用图片上传的阿里云和腾讯云组件,你会发现他们的方法是有差异的,但是可以通过适配器模式调整
laravel 学院中的举例子场景非常好,电子书和纸质书的翻页是不一样的操作,这个时候,需要把电子书的翻页使用是适配器模式,与纸质书的翻页整理一致,这个时候使用适配器模式最合适了
<?php
/**纸质书接口
* Interface PaperBookInterface
*/
interface PaperBookInterface
{
/**
* 翻页方法
* @return mixed
*/
public function turnPage();
/**
* 打开书的方法
* @return mixed
*/
public function open();
}
/**
* 电子书接口
* Interface EBookInterface
*/
interface EBookInterface
{
/**
* 打开电子书
* @return mixed
*/
public function pressStart();
/**
* 电子书翻页
* @return mixed
*/
public function pressNext();
}
class kindle implements EBookInterface
{
public function pressStart()
{
}
public function pressNext()
{
}
}
/**
* 电子数适配器类
* Class EBookAdapter
*/
class EBookAdapter implements PaperBookInterface
{
/**
* @var EBookInterface
*/
protected $eBook;
public function __construct(EBookInterface $ebook)
{
$this->eBook = $ebook;
}
public function open()
{
$this->eBook->pressStart();
}
public function turnPage()
{
$this->eBook->pressNext();
}
}
网友评论