详解PHP设计模式之适配器模式

综述

        看到这首先我们要知道什么是适配器模式,我们可以简单的理解为适配器设计模式只是将某个对象的接口适配为另一个对象所期望的接口。适配器很容易理解:我们一直在使用适配器,例如手机转换器,USB连接头等就是一种“适配器”。

实例

<?php
/**
 * =======================================
 * Created by ZHIHUA·WEI.
 * Author: ZHIHUA·WEI
 * Date: 2018/12/19
 * Time: 8:13
 * Project: 详解PHP设计模式
 * Power: 适配器设计模式
 * =======================================
 */

/**
 * Class UserInfo
 * 最开始的一个用户信息类
 */
class UserInfo
{
    /**
     * 根据用户UID获取用户信息
     * @param int $uid 用户ID
     * @return array 返回用户信息
     */
    public function getUserInfo($uid)
    {
        //1、相关逻辑处理|可以从Model层操作数据库进行查询读取信息等
        $user_info = array(
            'uid' => 1,
            'user_name' => 'zhihuawei',
        );
        return $user_info;
    }
}

/**
 * 适配器类:
 * 1、目的是在新需求增加的情况,不修改以前公共接口类
 * 2、通过对适配器UserInfoIntegral用户积分类的扩展来满足新需求
 */
class UserInfoIntegral extends UserInfo
{
    /**
     * 获得用户积分信息
     * @param $uid
     * @return array
     */
    public function getUserIntegral($uid)
    {
        $integral = array(
            'integral1' => 2,
            'integral2' => 3,
        );
        return $integral;
    }

    /**
     * 获得用户信息
     * @param $uid
     * @return array
     */
    public function getUser($uid)
    {
        $user_all = array(
            'user_info' => $this->getUserInfo($uid),
            'user_integral' => $this->getUserIntegral($uid),
        );
        return $user_all;
    }
}

/**
 * 获取用户信息客户端类
 */
class Client
{
    /**
     * 根据uid获取用户信息
     * @param $uid
     * @return array
     */
    public function get_user_info_by_uid($uid)
    {
        $UserInfoApp = new UserInfoIntegral();
        return $UserInfoApp->getUser($uid);
    }
}

$client = new Client();
print_r($client->get_user_info_by_uid(1));

结果

运行后打印结果如下:

Array
(
    [user_info] => Array
        (
            [uid] => 1
            [user_name] => zhihuawei
        )

    [user_integral] => Array
        (
            [integral1] => 2
            [integral2] => 3
        )

)
发布了154 篇原创文章 · 获赞 404 · 访问量 65万+

猜你喜欢

转载自blog.csdn.net/Zhihua_W/article/details/85088316