【PHP设计模式 10_ShiPeiQi.php】适配器模式
<?php /** * 【适配器模式】 * 对于服务器的代码,需要不同的客户端都可以调用 * 也可能是新的程序员要修改以前程序员写的老代码 */ header("Content-type: text/html; charset=utf-8"); //假设现在有一段很早的老代码,用户类 class User{ public static function getUserInfo(){ $info = array( 'name'=>'zhangsan', 'age'=>28, 'hobby'=>'study' ); //当时可能使用的是 serialize 序列化处理方式与客户端交互 $res = serialize($info); return $res; } } //当时的客户端代码:PHP调用 $uinfo = unserialize(User::getUserInfo()); ////注意这里的 “,” 逗号也可以 替代之前使用的 “.” 点号 echo '姓名:',$uinfo['name'],'<br>'; echo '年龄:',$uinfo['age'],'<br>'; echo '爱好:',$uinfo['hobby'],'<hr>'; //若干年后,有新的安卓客户端需要调用,在不改动原有服务器端代码的情况下,写一个适配器... //也可能是新的程序员要修改以前程序员写的老代码,需要以json格式输出 class AdapterUser extends User{ public static function getUserInfo(){ $old_info = parent::getUserInfo(); $new_info = unserialize($old_info); $res = json_encode($new_info); return $res; } } //新的客户端调用 $usinfo = json_decode(AdapterUser::getUserInfo()); //注意此时对象的调用方式(也可以上面json_decode后面价格参数 true,改成数组,此处注重测试) echo '姓名:',$usinfo->name,'<br>'; echo '年龄:',$usinfo->age,'<br>'; echo '爱好:',$usinfo->hobby,'<hr>';