一、概述
将一个类的接口转换成兼容接口,使原本由于接口不兼容不能一起工作的类可以一起工作,通俗的讲:将已经存在的的类创建一个“中间类”,用户直接调用该中间类
二、核心
- 属于结构型设计模式
- 将不同规格的设备通过统一规格的适配器对接到你的系统中
- 常用于和第三方库结合使用,因为第三方库的代码不允许修改
三、结构图
四、代码示例
<?php
class Cat
{
public function eatfish()
{
return "Cat eat fish!";
}
}
class Dog
{
public function eatBone()
{
return "Dog eat Bone!";
}
}
interface Adapter
{
public function Eat();
}
class CatAdapter extends Cat implements Adapter
{
public function Eat()
{
return $this->eatfish();
}
}
class DogAdapter extends Dog implements Adapter
{
public function Eat()
{
return $this->eatBone();
}
}
class Animal
{
private $adapter;
public function __construct($obj)
{
$this->adapter = $obj;
}
public function Eat()
{
return $this->adapter->Eat();
}
}
$catObj = new CatAdapter();
$animal = new Animal($catObj);
$animal->Eat();
$dogObj = new DogAdapter();
$animal = new Animal($dogObj);
$animal->Eat();
五、总结
- 其中CatClass和DogClass为原始类,在不修改的情况下,用户想要灵活调用类中的eatfish(eatBone)方法,可以为该类加上适配器
CatAdpterClass和DogAdpterClass
|