浅谈PHP设计模式的适配器模式

yizhihongxing

简介:

适配器模式属于结构型设计模式。
将一个类的接口转换成可应用的兼容接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式有两种实现方案,一种是继承的方式,一种是组合的方式。

适用场景:

  1. 兼容不方便更改的“祖传”代码。
    归纳具有相似点的模块,比如Laravel FileSystemAdapter。

优点:

  1. 扩展了原有类,增强了扩展性。
  2. 无需修改原有代码,符合开闭原则。

缺点:

由于PHP不支持多继承,一次最多只能适配一个适配者类。

代码:

//用户类,获取用户信息,这是个老项目
class User {
    public function getUserInfo() {
        return serialize([
            'id'    => 1,
            'name'  => 'zs',
            'phone' => '18888888888',
            'email' => '18888888888@gmail.com'
        ]);
    }
}

//老调用端口,由于这种序列化语法是PHP特有的,但是一旦扩展调用端的种类,比如添加java,安卓调用,其它调用端的接口将无法使用,为此需要做出优化。
$user = new User();
echo $user->getUserInfo() . PHP_EOL;

//优化 使用继承的方式
class UserAdapter1 extends User {
    public function getUserInfo() {
        $old_user_info = parent::getUserInfo();
        return json_encode(unserialize($old_user_info));
    }
}


//调用端
$user_new = new UserAdapter1();
echo $user_new->getUserInfo() . PHP_EOL;


//优化 使用组合的方式
class UserAdapter2 {
    public function getUserInfo() {
        $old_user_info = (new User)->getUserInfo();
        return json_encode(unserialize($old_user_info));
    }
}


//调用端
$user_new = new UserAdapter2();
echo $user_new->getUserInfo() . PHP_EOL;
```php

原文链接:https://www.cnblogs.com/phpphp/p/16855630.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈PHP设计模式的适配器模式 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 微信小程序云开发之模拟后台增删改查

    下面是关于“微信小程序云开发之模拟后台增删改查”的完整攻略。 1. 准备工作 在开始操作之前,我们需要先完成一些准备工作: 申请小程序开发者账号以及开通云开发功能。 在小程序中创建一个云开发环境。 在微信开发者工具中导入云开发环境。 2. 创建数据库 首先,在云开发控制台中创建一个新的数据库,并在其中添加集合(Collection)。集合可以看作是一个类似于…

    PHP 2023年5月30日
    00
  • php array_reverse 以相反的顺序返回数组实例代码

    要使用PHP的array_reverse()函数来返回一个相反顺序的数组,需要按照以下步骤进行操作: 1. 语法 array array_reverse(array $array, bool $preserve_keys=false) 参数解释: $array:需要被处理的原始数组。 $preserve_keys:可选参数,表示是否保留原始数组的键名及其关联…

    PHP 2023年5月26日
    00
  • PHP将身份证正反面两张照片合成一张图片的代码

    下面我将详细讲解PHP将身份证正反面两张照片合成一张图片的完整攻略。 安装必要的库 在进行图片处理之前,我们需要安装ImageMagick库和php imagick扩展。ImageMagick是一款开源的图像处理软件,而php imagick扩展是将ImageMagick整合到PHP中的工具。 我们可以通过以下命令在Linux系统中安装ImageMagick…

    PHP 2023年5月23日
    00
  • [PHP]实用函数6第1/2页

    首先,需要说明一下,”PHP实用函数6″是一本PHP函数手册,包含了许多常见的PHP函数并给出了详细的解释和示例。而“第1/2页”则是指其中的第一页和第二页。 以下是完整的攻略: PHP实用函数6 第1/2页 一、概述及使用方法 “PHP实用函数6″是一本PHP函数手册,旨在为开发人员提供方便,包含了许多常见的PHP函数。本手册共有两页,第一页包含了第1-5…

    PHP 2023年5月23日
    00
  • PHP中使用Imagick操作PSD文件实例

    下面是 “PHP中使用Imagick操作PSD文件实例” 的完整攻略: 一、安装Imagick扩展 PHP中的Imagick扩展是用于处理图像的功能强大的扩展,需要先在服务器上安装。可以使用以下命令来安装: sudo apt-get install php-imagick 安装完成后,运行phpinfo()确认是否已经安装成功。 二、安装ImageMagic…

    PHP 2023年5月26日
    00
  • php调用shell的方法

    下面是关于“php调用shell的方法”的详细攻略。 什么是shell Shell是计算机操作系统中一个命令行界面程序,它接收用户输入的命令,然后将其转换成操作系统能识别的指令,并交由内核处理。在本文中,我们主要关注的是Linux和Unix操作系统中的shell。 php如何调用shell命令 在PHP中可以通过调用系统命令来执行shell操作,常见的调用方…

    PHP 2023年5月23日
    00
  • PHP教程 变量定义

    PHP教程:变量定义 变量是指在程序中存储数据的容器,在PHP中,可以使用不同的方式来定义变量。定义变量时需要为其指定一个名字,该名字用于在程序中读取和更改变量的内容。以下是两种定义变量的方式: 1. 直接赋值 直接赋值是一种简单的方式,可以在赋值时同时定义变量。在PHP中,不需要指定变量的类型,PHP会自动根据赋值时的变量类型来确定变量类型。例如: $na…

    PHP 2023年5月23日
    00
  • PHP也能干大事之PHP中的编码解码详解

    PHP也能干大事之PHP中的编码解码详解 1. 什么是编码和解码? 在网络通信过程中,我们经常需要将数据从一种格式转换为另一种格式。编码和解码就是其中的两个重要过程。编码是将数据从一种表示形式转换为另一种表示形式的过程,而解码则是将已编码的数据重新转换成原来的表示形式。 在PHP中,有许多对编码和解码的支持。接下来,我们来详细讲解几种常见的编码和解码方式及其…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部