php适配器模式简单应用示例
本文实例讲述了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数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
PHP设计模式之装饰者模式
介绍 装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 思维导图 有这样一个项目,做一个餐厅订餐系统.起初的代码结构是这样的.前面有很多Beverage的继承类,现在遇到的问题是牛奶的价钱上涨了,那么所有相关的类,我们都要进行调整,比如Milk,SugarAndMilk类,这种类还有很多,我们需要逐个去修改类中的方法--开发人员每次都做这种事情,要疯了!所以我们要改变现有的结构.以下的图都是简图,实际的图,可没有这么简单. 设计问题: 1>类数量爆炸,有
-
PHP设计模式之装饰者模式代码实例
定义: 装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能.传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多. 角色: Component(被装饰对象基类) ConcreteComponent(具体被装饰对象) Decorator(装饰者基类) ContreteDecorator(具体的装饰者类) 示例代码: //被装饰者基类 interface Component { public function operatio
-
php装饰者模式简单应用案例分析
本文实例讲述了php装饰者模式简单应用.分享给大家供大家参考,具体如下: 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 示例: A.B.C编辑同一篇文章. class Article{ protected $content; public function __construct($info){ $this->content = $info; } } class editor_A extends Articl
-
学习php设计模式 php实现装饰器模式(decorator)
动态的给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活[GOF95] 装饰模式是以对客户透明的方式动态地给一个对象附加上更多的职责.这也就是说,客户端并不会觉得对象在装饰前和装饰后有什么不同.装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展. 一.装饰模式结构图 二.装饰模式中主要角色 抽象构件(Component)角色:定义一个对象接口,以规范准备接收附加职责的对象,从而可以给这些对象动态地添加职责. 具体构件(Concrete Compo
-
PHP设计模式之装饰器模式定义与用法详解
本文实例讲述了PHP设计模式之装饰器模式定义与用法.分享给大家供大家参考,具体如下: 什么是装饰器模式 作为一种结构型模式, 装饰器(Decorator)模式就是对一个已有结构增加"装饰". 适配器模式, 是为现在有结构增加的是一个适配器类,.将一个类的接口,转换成客户期望的另外一个接口.适配器让原本接口不兼容的类可以很好的合作. 装饰器模式是将一个对象包装起来以增强新的行为和责任.装饰器也称为包装器(类似于适配器) 有些设计设计模式包含一个抽象类,而且该抽象类还继承了另一个抽象类,这
-
php桥接模式应用案例分析
本文实例讲述了php桥接模式应用.分享给大家供大家参考,具体如下: 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化. 示例: 当一个信息时 根据发送渠道分为:QQ消息.email消息.短信消息等 根据消息类型分为:普通.警告.危急等 每种消息都有三种类型(普通QQ消息.警告QQ消息.危急QQ消息...), 每种情况单独写一个类就需要写九个,如果扩展一个类型,就需要再写三个类. 使用桥接模式,可以减少类的数量,易扩展 abstract class info{ public $msg
-
php设计模式 Decorator(装饰模式)
复制代码 代码如下: <?php /** * 装饰模式 * * 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活 */ header("Content-type:text/html;charset=utf-8"); abstract class MessageBoardHandler { public function __construct(){} abstract public function filter($msg); } class Messag
-
php设计模式之工厂模式用法经典实例分析
本文实例讲述了php设计模式之工厂模式用法.分享给大家供大家参考,具体如下: <?php /*** * @desc 工厂模式 * ***/ interface DB{ /* * @desc 接口类不体现具体实现,只是为了规范一套规则 * **/ public function conn(); public function add(); public function delete(); public function update(); public function select(); pu
-
PHP面向对象程序设计组合模式与装饰模式详解
本文实例讲述了PHP面向对象程序设计组合模式与装饰模式.分享给大家供大家参考,具体如下: 组合模式 定义:组合模式定义了一个单根继承体系,使具有截然不同职责的集合可以并肩工作. 一个军队的案例, <?php abstract class Unit { // 个体 abstract function bombardStrength(); } class Archer extends Unit { // 弓箭手 function bombardStrength() { return 4; } } c
-
php设计模式之观察者模式定义与用法经典示例
本文实例讲述了php设计模式之观察者模式定义与用法.分享给大家供大家参考,具体如下: <?php /** * @desc 利用观察者模式,实现不同用户进入显示不同的内容 * 1.主题 * 2.观察者接口 * 3.观察者 * ***/ interface Observer{ //添加观察者对象 public function attach($observer); //删除观察者对象 public function detach($observer); //执行观察者需要执行的方法 public f
-
php设计模式之职责链模式定义与用法经典示例
本文实例讲述了php设计模式之职责链模式定义与用法.分享给大家供大家参考,具体如下: <?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为型模式. 在这种模式中,通常每个接收者都包含对另一个接收者的引用.如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推. * 模拟公司请假流程,实现职责链模式 * 项目主管:
-
php 策略模式原理与应用深入理解
本文实例讲述了php 策略模式原理与应用.分享给大家供大家参考,具体如下: 策略模式 简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果 就应用场景来说: 例1:比如购买商品需要支付,你可以提供 微信支付.支付宝支付.支付通支付....(不同的支付方式就是不同的策略) 例2:购物车对产品的计价,如非vip 按原价计算 .vip按8折计算.有推广积分的可以用100积分抵20块...(不同的客户条件计价算法有所不同,只是这里的策略选择是根据登录顾客资料来变动的,当然也可以用观察者模式
随机推荐
- 匹配yyyy-mm-dd日期格式的的正则表达式
- java制作仿微信视频播放控件
- mssql使用存储过程破解sa密码
- node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
- Oracle 用户密码有效期的sql语句
- Python的Tornado框架实现图片上传及图片大小修改功能
- JavaScript获取浏览器信息的方法
- 高效率JavaScript编写技巧整理
- .Net WInform开发笔记(五)关于事件Event
- AJAX XMLHttpRequest对象详解
- Python中计算三角函数之cos()方法的使用简介
- Python urllib模块urlopen()与urlretrieve()详解
- C#简单实现在网页上发邮件的案例
- 用C#生成不重复的随机数的代码
- 基于C#实现Windows服务状态启动和停止服务的方法
- Java二维码登录流程实现代码(包含短地址生成,含部分代码)
- python中json格式数据输出的简单实现方法
- mssql @@ERROR 使用
- Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
- node.js中的fs.appendFile方法使用说明
