/*
适配器模式
将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间
常见的如类代码升级
*/
// 旧类
class User
{
private $user_name;
public function __construct($user_name)
{
$this->user_name = $user_name;
}
public function userName()
{
echo $this->user_name;
}
}
//目标角色要用那些方法,包括旧类的方法和新增加的方法
interface Target
{
public function userName(); //旧类的方法
public function getName(); //新增加的方法
}
class Adapter implements Target
{
// 保存旧的user类
private $adapter;
public function __construct(User $user)
{
$this->adapter = $user;
}
//
public function userName()
{
$this->adapter->userName();
}
public function getName()
{
echo "<br/>新增加了方法";
}
}
$user = new User("旧类");
$adapter = new Adapter($user);
$adapter->userName(); // 旧方法
$adapter->getName(); // 新方法