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

简介:

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

适用场景:

  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日

相关文章

  • php实现Linux服务器木马排查及加固功能

    PHP实现Linux服务器木马排查及加固功能 概述 本攻略主要介绍如何使用PHP实现Linux服务器木马排查及加固功能。由于不同的服务器环境具有差异,本攻略重点介绍基于Ubuntu 18.04 LTS操作系统的实现方法,其他操作系统如CentOS、Debian等也可以参考。 排查过程 步骤一:检查系统环境 在开始排查之前,首先需要检查系统环境是否具备必要的工…

    PHP 2023年5月26日
    00
  • php eval函数用法总结

    PHP eval函数用法总结 eval() 函数是 PHP 中的一个特殊函数,可以将字符串作为 PHP 代码执行。该函数接受一个字符串作为参数,并将其作为 PHP 代码执行,返回执行结果。这使得开发人员可以在运行时动态执行 PHP 代码,可以用于编写动态插件、模板引擎、动态生成类等功能。 但是,由于 eval() 函数的特殊性,使用不当可能会导致安全问题。在…

    PHP 2023年5月25日
    00
  • PHP函数使用说明(补充)

    PHP函数使用说明(补充) 前言 本文是关于PHP函数的补充说明,旨在帮助PHP初学者更好地掌握和理解PHP函数的使用方法。如果您还不熟悉PHP函数的基本操作,请先阅读 PHP函数使用说明。 函数命名规范 PHP函数的命名规范与变量的命名规范类似,建议使用小驼峰命名法。另外,函数名应尽量简洁明了,易于理解。 定义函数 定义函数的方法与基础版中所述的一致,这里…

    PHP 2023年5月23日
    00
  • 编写PHP程序检查字符串中的中文字符个数的实例分享

    下面是详细讲解“编写PHP程序检查字符串中的中文字符个数的实例分享”的完整攻略。 简介 PHP是一种跨平台的开源脚本语言,可以创建动态交互性的Web页面,是Web开发领域中最流行的语言之一。字符串是PHP中的一种重要数据类型,字节串和Unicode字符串都可以用字符串表示,其中Unicode字符串中包含了中文字符。在许多应用场景中,需要统计字符串中中文字符的…

    PHP 2023年5月26日
    00
  • PHP实现的简单操作SQLite数据库类与用法示例

    下面我来详细讲解一下“PHP实现的简单操作SQLite数据库类与用法示例”: 什么是SQLite数据库 SQLite 是一种软件库,实现了一个自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不同,您无需在系统中配置或管理 SQLite。SQLite 的使用非常适合嵌入式设备以及占用资源较少的应用程序…

    PHP 2023年5月23日
    00
  • PHPThumb PHP 图片缩略图库

    PHPThumb 是一个开源的 PHP 图片缩略图库,它能够动态生成缩略图,并且还支持水印、旋转、裁剪等功能。下面是 PHPThumb 的使用攻略。 安装 PHPThumb 是一个 PHP 库,可以通过 Composer 进行安装。在项目根目录下运行下面的命令即可: composer require masterexploder/phpthumb 基本用法 …

    PHP 2023年5月27日
    00
  • PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法

    对于一些很大或很小的数字,PHP内部会以科学计数法的形式显示,即以指数形式表示。例如,1.234E+5表示的是1.234 × 10^5,这在一些场合下不太方便使用。PHP采用了超长数字运算的方法,来解决这个问题。 超长数字运算指将数字作为字符串处理,而不是转换为数值进行计算。在处理超长数字运算时,我们可以使用下面这些函数: bcadd():高精度加法函数,用…

    PHP 2023年5月26日
    00
  • PHP中使用array函数新建一个数组

    不错的问题。下面是关于PHP中使用array函数新建一个数组的完整攻略: 标题 在markdown中,使用#作为标题开头,标题的数目代表了标题的级数,最多6级标题。 语法格式 PHP中使用array函数新建一个数组的语法如下: array(value1, value2, value3…) 其中,value1, value2, value3…是该数组元…

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