设计模式四:适配器模式

适配器模式:

  适配器类让原本不兼容的类可以合作共处。类似转换头。

<?php

/**
 * 用户信息接口
 */
interface UserInfoInterface{
    public function userInfo();
}

/**
 * json 返回的用户类
 */
class UserInfoJson implements UserInfoInterface{
    public function userInfo()
    {
        return json_encode(['user_name'=>'张三','age'=>30]);
    }
}

/**
 * 序列化 返回的用户类
 */
class UserInfoSerialize implements UserInfoInterface{
    public function userInfo()
    {
        return serialize(['user_name'=>'张三','age'=>30]);
    }
}

/**
 * 适配器类接口
 */
interface userInfoAdaptor{
    public function userInfoAdaptor(UserInfoInterface $userInfo);
}

class userInfo implements userInfoAdaptor{
    
    public function userInfoAdaptor(UserInfoInterface $i)
    {
        // 判断结果是json 转为 序列化
        if(!is_null($string = json_decode($i->userInfo()))){
            return serialize($string);
        }else{
            // 否则 转换为json
            $string = unserialize($i->userInfo());
            return json_encode($string);
        }
    }
}

$userInfo = new userInfo();
var_dump($userInfo->userInfoAdaptor(new UserInfoJson()));
var_dump($userInfo->userInfoAdaptor(new UserInfoSerialize()));

posted @ 2021-08-24 14:37  wish_yang  阅读(39)  评论(0编辑  收藏  举报