php设计模式之适配器模式实例代码
<?php
header("Content-type:text/html;charset=utf-8"); // 适配器模式 /**
* 查看天气接口
*/
class Tianqi
{
public static function show(){
$arr = array('tem'=>,'wind'=>,'sun'=>'windy','weekday'=>"周三");
return serialize($arr);
}
} //php客户端调用
$b = unserialize(Tianqi::show());
echo "时间:".$b['weekday']."<br>";
echo "温度:".$b['tem']."<br>";
echo "风力:".$b['wind']."<br>";
echo "太阳:".$b['sun']."<br>"; // 突然来了一批Java程序员,需要获取天气接口数据,但是他们不识别序列化后的数据,这时候应该怎么办呢? /**
* 增加适配器
*/
class ADdapterTianqi extends Tianqi
{
public static function show()
{
$str = parent::show();
$arr = unserialize($str);
return json_encode($arr);
}
} // 适配器访问数据
echo "<br><br>适配器访问数据:<br>";
$b = json_decode(ADdapterTianqi::show(),true);
echo "时间:".$b['weekday']."<br>";
echo "温度:".$b['tem']."<br>";
echo "风力:".$b['wind']."<br>";
echo "太阳:".$b['sun']."<br>";
php设计模式之适配器模式实例代码的更多相关文章
- php设计模式之装饰模式实例代码
<?php header("Content-type:text/html;charset=utf-8"); /** * 文章编辑类 */ class Article { pr ...
- php设计模式之观察者模式实例代码
php提供的两个接口,一个被观察者接口SplSubject,一个或多个观察者接口SPLObserver,和一个可以储存对象的类SplObjectStorage.被观察者有三个方法,需要实现这三个方法, ...
- php设计模式之多态实例代码
<?php header("Content-type:text/html;charset=utf-8"); /** * 虎 */ abstract class Tiger { ...
- C#设计模式(7)——适配器模式(Adapter Pattern)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
1.组合和继承之间的选择 组合和继承都允许在新的类中放置子对象,组合是显式的这样做,而继承则是隐式的做. 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形.即在新类中嵌入某个对象,让其实 ...
- C#设计模式之七适配器模式(Adapter)【结构型】
一.引言 从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题, ...
- C#设计模式之六适配器模式(Adapter Pattern)【结构型】
一.引言 从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题,那[ ...
- C#设计模式(7)——适配器模式(Adapter Pattern)(转)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- 【Python】《大话设计模式》Python版代码实现
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
随机推荐
- Asciidoctor-pdf生成pdf文件
本文使用asciidoc语法编写. = Asciidoctor-pdf生成pdf文件 Pinnsvin Pinnsvin@163.com v1.0 {docdate} :plantuml-server ...
- # ConfigureAwait常见问题解答
原文: https://devblogs.microsoft.com/dotnet/configureawait-faq/ .NET 在七多年前在语言和类库添加了 async/await .在那个时候 ...
- Mysql字符串截取,去掉时间,匹配日期等于今日
Mysql字符串截取,去掉时间,匹配日期等于今日 方案一 select time from jsb where date(time)=date(now()); 方案二 ));
- CF #618 div.2
序 闲来无事,打场CF,本人蒟蒻,考场A了前三道,第四有解答 正文 T1 Non-zero 是道水题.... 给你一个序列a.要求你输出最少的操作次数使这个序列的累和与累乘都不为0: 一次操作指给\( ...
- [大数据技术]datax的安装以及使用
1.datax简述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.Ta ...
- java开发相关工具安装包分享
链接:https://pan.baidu.com/s/19rSlXhrZ9AtNdai64tErGQ 提取码:04up
- Jackson使用指南
Jackson常用注解 序列化注解 @JsonAnyGetter 像普通属性一样序列化Map public class ExtendableBean { public String name; pri ...
- 最短路径算法总结(floyd,dijkstra,bellman-ford)
继续复习数据结构和算法,总结一下求解最短路径的一些算法. 弗洛伊德(floyd)算法 弗洛伊德算法是最容易理解的最短路径算法,可以求图中任意两点间的最短距离,但时间复杂度高达\(O(n^3)\),主要 ...
- Java文件与类动手动脑
动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...
- fiddler使用post方法带参数(base64)请求接口,模拟表单提交,类似工具postman
头格式如下: Content-Length: Content-Type: multipart/form-data; boundary=-------------------------- Host: ...