zoukankan      html  css  js  c++  java
  • 【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>';
  • 相关阅读:
    mysql主从复制配置
    mysql三种修改密码的方式
    mysqldump数据库备份与恢复
    mysql多实例安装
    线性回归与梯度下降法——原理与实现
    K-Means聚类算法原理
    EFcodeFirst+T4=操纵任意数据库
    涨姿势UWP源码——IsolatedStorage
    记一次Project插件开发
    基于Nodejs生态圈的TypeScript+React开发入门教程
  • 原文地址:https://www.cnblogs.com/rxbook/p/6002999.html
Copyright © 2011-2022 走看看