php适配器模式

/*
适配器模式
将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间
常见的如类代码升级
 */

// 旧类
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();  // 新方法