首页 > 编程语言 >浅谈PHP设计模式的适配器模式

浅谈PHP设计模式的适配器模式

时间:2022-11-03 19:56:46浏览次数:35  
标签:getUserInfo PHP 浅谈 适配器 调用 user new 设计模式

简介:

适配器模式属于结构型设计模式。
将一个类的接口转换成可应用的兼容接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式有两种实现方案,一种是继承的方式,一种是组合的方式。

适用场景:

  1. 兼容不方便更改的“祖传”代码。
    归纳具有相似点的模块,比如Laravel FileSystemAdapter。

优点:

  1. 扩展了原有类,增强了扩展性。
  2. 无需修改原有代码,符合开闭原则。

缺点:

由于PHP不支持多继承,一次最多只能适配一个适配者类。

代码:

//用户类,获取用户信息,这是个老项目
class User {
    public function getUserInfo() {
        return serialize([
            'id'    => 1,
            'name'  => 'zs',
            'phone' => '18888888888',
            'email' => '[email protected]'
        ]);
    }
}

//老调用端口,由于这种序列化语法是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

标签:getUserInfo,PHP,浅谈,适配器,调用,user,new,设计模式
From: https://www.cnblogs.com/phpphp/p/16855630.html

相关文章

  • 【设计模式】适配器模式
    适配器模式的意图将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作(就是把接口不兼容的问题抹平,但不......
  • 浅谈建筑电气火灾原因分析及防范措施
    陈盼安科瑞电气股份有限公司上海嘉定201801 【摘要】随着经济和科技的快速发展,建筑业以及建筑电气得到了充分的发展。建筑中电气的应用极大地提高了人们的生活质量。但是......
  • 浅谈限流式保护器应用于防范电动自行车火灾的解决方案
    陈盼安科瑞电气股份有限公司上海嘉定201801【摘要】为了进一步研究电动自行车火灾事故发生机理,提升安全防范的针对性,文章分析了低压电气系统发生火灾的原理,解构了电动自行......
  • 设计模式之结构型模式
    目录一、适配器模式二、装饰器模式三、代理模式四、外观模式五、享元模式六、桥接模式七、组合模式创建型模式(5个)工厂方法模式、抽象工厂模式、单例模式、建造者模式、原......
  • 设计模式之代理,手动实现动态代理,揭秘原理实现
    开心一刻周末,带着老婆儿子一起逛公园。儿子一个人跑在前面,吧唧一下不小心摔了一跤,脑袋瓜子摔了个包,稀里哗啦的哭道:“爸爸,我会不会摔成傻子!”我指了指我头上的伤痕安......
  • 设计模式十三(数据访问对象模式,前端控制器模式)
    数据访问对象模式(DataAccessObjectPattern)或DAO模式用于把低级的数据访问API或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。数据访问对象......
  • 设计模式之代理模式
    概述代理模式是一种应用很广泛的结构型设计模式,而且变化很多。在代理模式中引入了一个新的代理对象,代理对象可以在客户端对象和目标对象之间起到中介的作用,去掉客户不能看......
  • 1-设计模式介绍
    1,设计模式概述1.1软件设计模式的产生背景"设计模式"最初被用于建筑领域的设计中。1977年美国著名建筑大师`克里斯托夫·亚历山大在他的著作《建筑模式语言:城镇、建筑、......
  • 设计模式---策略模式
    简述预先定义有着不同执行过程但结果相同的算法族,运行时指定所需算法。算法族此处为一组有共同主题的有相同结果的不同算法的集合。话不多说,看个优化案例。优化案例......
  • day 24设计模式
    概述:设计模式是一种固定的解决某个问题的一种方式,不区分语言,常用的设计模式有23种,分为三大类(针对类和对象)设计模式分类创建型(创建对象)单例模式、工厂模式结构型(将多个......