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