php常用设计模式和应用场景(浅谈PHP设计模式的适配器模式)
导读:简介: 适配器模式属于结构型设计模式。 将一个类的接口...
简介:
适配器模式属于结构型设计模式 。
将一个类的接口转换成可应用的兼容接口 。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作 。
适配器模式有两种实现方案 ,一种是继承的方式 ,一种是组合的方式 。适用场景: 兼容不方便更改的“祖传 ”代码 。
归纳具有相似点的模块 ,比如Laravel FileSystemAdapter 。 优点: 扩展了原有类 ,增强了扩展性 。 无需修改原有代码 ,符合开闭原则 。 缺点:由于PHP不支持多继承 ,一次最多只能适配一个适配者类 。
代码: //用户类 ,获取用户信息 ,这是个老项目 class User { public function getUserInfo() { return serialize([ id => 1, name => zs, phone => 18888888888, email => 18888888888@gmail.com ]); } } //老调用端口 ,由于这种序列化语法是PHP特有的 ,但是一旦扩展调用端的种类 ,比如添加java ,安卓调用,其它调用端的接口将无法使用 ,为此需要做出优化 。 $user = new User(); echo $user->getUserInfo() . PHP_EOL; //优化 使用继承的方式 class UserAdapter1 extends User { public function getUserInfo() { $old_user_info = parent::getUserInfo(); return json_encode(unserialize($old_user_info)); } } //调用端 $user_new = new UserAdapter1(); echo $user_new->getUserInfo() . PHP_EOL; //优化 使用组合的方式 class UserAdapter2 { public function getUserInfo() { $old_user_info = (new User)->getUserInfo(); return json_encode(unserialize($old_user_info)); } } //调用端 $user_new = new UserAdapter2(); echo $user_new->getUserInfo() . PHP_EOL; ```php创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!