/*适配器模式将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间常见的如类代码升级 */// 旧类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 "新增加了方法"; }}$user = new User("旧类");$adapter = new Adapter($user);$adapter->userName(); // 旧方法$adapter->getName(); // 新方法