本文实例讲述了php适配器模式简单应用。分享给大家供大家参考,具体如下:

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

示例:

//假设使用php开发了一个天气接口

class Weather{

public static function show(){

$info = array(

'temperature' => '25°C',

'wind' => '西北风3~4级',

'weather' => '晴',

'PM2.5' => 60

);

return serialize($info);

}

}

//PHP客户端调用

$msg = Weather::show();

$msg_arr = unserialize($msg);

echo $msg_arr['weather'];

//这时,如果java、python也要来调用天气接口,

//但是不识别串行化后的字符串,但是又不能修改旧接口和旧php的调用

//这时候可以用一个新的类继承,也就是适配器模式,来修改返回的数据格式为json

class WeatherAdapter extends Weather{

public static function show(){

$info = parent::show();

$info_arr = unserialize($info);

return json_encode($info_arr);

}

}

//java、python就可以使用返回的json进行使用

$msg = WeatherAdapter::show();

运行结果:

希望本文所述对大家PHP程序设计有所帮助。

php适配模式实例,php适配器模式简单应用示例相关推荐

  1. Eclipse中使用Hadoop集群模式开发配置及简单程序示例(Windows下)

    Hadoop入门配置系列博客目录一览 1. Eclipse中使用Hadoop伪分布模式开发配置及简单程序示例(Linux下) 2. 使用Hadoop命令行执行jar包详解(生成jar.将文件上传到df ...

  2. 分布式事务框架seata AT、TCC事务模式实例

    说明: 演示模块:base-info/jyw-learn模块 base-info连接本地数据库 jyw-learn模块连接虚拟机上安装的数据库 seata下载 演示版本:1.4.2 下载地址:http ...

  3. java简单工厂模式实例造车,JAVA设计模式学习5——工厂方法模式

    工厂方法模式(Factory Method)又称虚拟构造子模式,可以说是简单工厂的抽象,也可以理解为简单工厂是退化了的工厂方法模式,其表现在简单工厂丧失了工厂方法的多态性.我们前一节中提到当产品结构变 ...

  4. java写适配器模式实例_java适配器模式实例

    java适配器模式 首先,先来先讲讲适配器.适配就是由"源"到"目标"的适配,而当中链接两者的关系就是适配器.它负责把"源"过度到" ...

  5. 《JAVA与模式》之适配器模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...

  6. php模式设计之 适配器模式

    在这个有没有对象都要高呼"面向对象"的年代,掌握面向对象会给我们带来意想不到的方便.学编程的小伙伴从开始能写几行代码实现简单功能到后来懂得将一些重复的操作组合起来形成一个" ...

  7. python类是实例的工厂_Python设计模式之工厂方法模式实例详解

    本文实例讲述了Python设计模式之工厂方法模式.分享给大家供大家参考,具体如下: 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类, ...

  8. java的简单工厂模式_java设计模式之简单工厂模式

    简单工厂模式的概念 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建.简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. ...

  9. JavaScript设计模式-10.工厂模式实例xhr

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...

最新文章

  1. 深入java_深入Java Final
  2. suse 12sp1 oracle 11g r2 时出现错误 调用/sysman/lib/ins_emagent.mk的目标nmo时出错
  3. swoole 要求php版本,swoole哪个版本支持php5
  4. Facebook表示将认真对待平台上严重的服装虚假广告问题
  5. 【PHP】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF区别
  6. jQuery数据转换与提交
  7. MySQL数据库和ACID模型
  8. python七段数码管倒计时_python实现七段数码管和倒计时效果
  9. 打工的人面对老板是没有溢价权的
  10. GridView 中取值的方法汇总
  11. LINUX中文输入法
  12. 如何用Scapy写一个端口扫描器?
  13. 苹果产品信息查询_除了让你买买买,苹果官网还隐藏着这些超实用网页工具
  14. 全国气象预报业务产品grib2数据格式解析
  15. 在DX12中使用imgui 鼠标响应问题的解决
  16. 怎么把虚拟机的计算机弄到桌面,Win10自带的虚拟机功能,教你这样设置,免费让一台电脑变3台!...
  17. 消除红眼效应及matlab实现
  18. TOGAF10标准读书会第2场活动精彩继续,高光时刻回顾!
  19. bmp图像文件格式说明
  20. 神经网络与BP算法(代码实现)

热门文章

  1. 幅度响应怎么计算_四电平脉冲幅度调制(PAM4)信号的误码分析
  2. 浙江义乌发现桥头遗址,将5000年中华文明,再前推4000年?
  3. AI算法连载15:统计之数据降维
  4. 基于corundumstudio建立websocket长连接
  5. java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法
  6. IP 数据报首部分析
  7. Java8 默认方法
  8. 原始套接字编程(1)
  9. node.js详解Http服务器
  10. Hbase RegionServer 启动失败 Time difference of xxx ms max allowed of 30000ms