iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP适配器模式怎么应用
  • 454
分享到

PHP适配器模式怎么应用

2023-07-05 22:07:29 454人浏览 泡泡鱼
摘要

今天小编给大家分享一下PHP适配器模式怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP 适配器模式讲解和代码示例

今天小编给大家分享一下PHP适配器模式怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

PHP 适配器模式讲解和代码示例

适配器是一种结构型设计模式, 它能使不兼容的对象能够相互合作。

适配器可担任两个对象间的封装器, 它会接收对于一个对象的调用, 并将其转换为另一个对象可识别的格式和接口。

复杂度:******

流行度:******

使用示例: 适配器模式在 php 代码中很常见。 基于一些遗留代码的系统常常会使用该模式。 在这种情况下, 适配器让遗留代码与现代的类得以相互合作。

识别方法: 适配器可以通过以不同抽象或接口类型实例为参数的构造函数来识别。 当适配器的任何方法被调用时, 它会将参数转换为合适的格式, 然后将调用定向到其封装对象中的一个或多个方法。

  • 真实世界示例

适配器允许你使用第三方或遗留系统的类, 即使它们与你的代码不兼容。 例如, 你可以创建一系列特殊的封装器, 来让应用所发出的调用与第三方类所要求的接口与格式适配, 而无需重写应用的通知接口以使其支持每一个第三方服务 (如钉钉、 微信、 短信或其他任何服务)。

index.php: 真实世界示例

<?php

namespace RefactoringGuru\Adapter\RealWorld;


interface Notification
{
   public function send(string $title, string $message);
}


class EmailNotification implements Notification
{
   private $adminEmail;

   public function __construct(string $adminEmail)
   {
       $this->adminEmail = $adminEmail;
   }

   public function send(string $title, string $message): void
   {
       mail($this->adminEmail, $title, $message);
       echo "Sent email with title '$title' to '{$this->adminEmail}' that says '$message'.";
   }
}


class Slackapi
{
   private $login;
   private $apiKey;

   public function __construct(string $login, string $apiKey)
   {
       $this->login = $login;
       $this->apiKey = $apiKey;
   }

   public function logIn(): void
   {
       // Send authentication request to Slack WEB service.
       echo "Logged in to a slack account '{$this->login}'.\n";
   }

   public function sendMessage(string $chatId, string $message): void
   {
       // Send message post request to Slack web service.
       echo "Posted following message into the '$chatId' chat: '$message'.\n";
   }
}


class SlackNotification implements Notification
{
   private $slack;
   private $chatId;

   public function __construct(SlackApi $slack, string $chatId)
   {
       $this->slack = $slack;
       $this->chatId = $chatId;
   }

   
   public function send(string $title, string $message): void
   {
       $slackMessage = "#" . $title . "# " . strip_tags($message);
       $this->slack->logIn();
       $this->slack->sendMessage($this->chatId, $slackMessage);
   }
}


function clientCode(Notification $notification)
{
   // ...

   echo $notification->send("Website is down!",
       "<strong style='color:red;font-size: 50px;'>Alert!</strong> " .
       "Our website is not responding. Call admins and bring it up!");

   // ...
}

echo "Client code is designed correctly and works with email notifications:\n";
$notification = new EmailNotification("developers@example.com");
clientCode($notification);
echo "\n\n";


echo "The same client code can work with other classes via adapter:\n";
$slackApi = new SlackApi("example.com", "XXXXXXXX");
$notification = new SlackNotification($slackApi, "Example.com Developers");
clientCode($notification);

Output.txt: 执行结果

Client code is designed correctly and works with email notifications:
Sent email with title 'Website is down!' to 'developers@example.com' that says '<strong style='color:red;font-size: 50px;'>Alert!</strong> Our website is not responding. Call admins and bring it up!'.
The same client code can work with other classes via adapter:
Logged in to a slack account 'example.com'.
Posted following message into the 'Example.com Developers' chat: '#Website is down!# Alert! Our website is not responding. Call admins and bring it up!'.
  • 概念示例

本例说明了适配器设计模式的结构并重点回答了下面的问题:

  • 它由哪些类组成?

  • 这些类扮演了哪些角色?

  • 模式中的各个元素会以何种方式相互关联?

了解该模式的结构后, 你可以更容易地理解下面基于真实世界的 PHP 应用案例。

index.php:  概念示例
<?php

namespace RefactoringGuru\Adapter\Conceptual;


class Target
{
   public function request(): string
   {
       return "Target: The default target's behavior.";
   }
}


class Adaptee
{
   public function specificRequest(): string
   {
       return ".eetpadA eht fo roivaheb laicepS";
   }
}


class Adapter extends Target
{
   private $adaptee;

   public function __construct(Adaptee $adaptee)
   {
       $this->adaptee = $adaptee;
   }

   public function request(): string
   {
       return "Adapter: (TRANSLATED) " . strrev($this->adaptee->specificRequest());
   }
}


function clientCode(Target $target)
{
   echo $target->request();
}

echo "Client: I can work just fine with the Target objects:\n";
$target = new Target();
clientCode($target);
echo "\n\n";

$adaptee = new Adaptee();
echo "Client: The Adaptee class has a weird interface. See, I don't understand it:\n";
echo "Adaptee: " . $adaptee->specificRequest();
echo "\n\n";

echo "Client: But I can work with it via the Adapter:\n";
$adapter = new Adapter($adaptee);
clientCode($adapter);
Output.txt:  执行结果
Client: I can work just fine with the Target objects:
Target: The default target's behavior.

Client: The Adaptee class has a weird interface. See, I don't understand it:
Adaptee: .eetpadA eht fo roivaheb laicepS

Client: But I can work with it via the Adapter:
Adapter: (TRANSLATED) Special behavior of the Adaptee.

以上就是“PHP适配器模式怎么应用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网PHP编程频道。

--结束END--

本文标题: PHP适配器模式怎么应用

本文链接: https://www.lsjlt.com/news/355585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP适配器模式怎么应用
    今天小编给大家分享一下PHP适配器模式怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PHP 适配器模式讲解和代码示例...
    99+
    2023-07-05
  • Adapter适配器模式怎么应用
    这篇文章主要讲解了“Adapter适配器模式怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Adapter适配器模式怎么应用”吧! Adapter(...
    99+
    2024-04-02
  • PHP适配器模式Adapter Pattern怎么使用
    本篇内容主要讲解“PHP适配器模式Adapter Pattern怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP适配器模式Adapter Pattern怎么使用”...
    99+
    2023-07-05
  • JavaScript适配器模式的应用详解
    目录适配器模式适配器模式的应用小结适配器模式 适配器模式的作用是解决两个软件实体间的接口不兼容的问题。使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体可以一起工作。 适...
    99+
    2022-11-13
    JavaScript 适配器模式 JavaScript 适配器
  • Android设计模式之适配器模式怎么使用
    适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类能够一起工作,通过创建一个适配器类...
    99+
    2023-08-14
    Android
  • java适配器模式怎么实现
    适配器模式是一种结构型设计模式,用于将一个类的接口转换为另一个接口,以便兼容不同的类或系统。在Java中,适配器模式可以通过以下步骤...
    99+
    2023-10-23
    java
  • Java适配器模式怎么掌握
    今天小编给大家分享一下Java适配器模式怎么掌握的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、什么是适配器模式?其实适配...
    99+
    2023-06-29
  • Java设计模式的适配器模式怎么实现
    这篇文章主要介绍“Java设计模式的适配器模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式的适配器模式怎么实现”文章能帮助大家解决问题。什么是适配器模式适配器模式(Adap...
    99+
    2023-06-30
  • Java中怎么实现适配器模式
    本篇文章为大家展示了Java中怎么实现适配器模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。类适配模式在地球时代,所有坐骑都是只能跑,不能飞的,而现在很多坐骑在地球都可以飞了。假设,地球时代的坐骑...
    99+
    2023-06-17
  • C#适配器模式的使用
    目录前言适配器模式前言 我昨天做了个梦,我梦见我在一条路走,走的时候经过一个房间,里面关着一条边牧和鸡和猪,后来我醒了,我知道那只边牧就是小叶子(哈仔十一的边牧),小叶子具备牧羊和牧...
    99+
    2024-04-02
  • Java适配器模式的实现及应用场景
    目录介绍实现总结优点缺点应用场景介绍 Java中的适配器模式是一种结构型设计模式,她将一个类的接口转换成另一个客户端所期望的接口.适配器模式让那些不兼容的类可以一起工作,它通过不兼容...
    99+
    2023-05-17
    Java适配器模式 Java设计模式 Java设计模式适配器模式
  • web设计模式的适配器模式有什么用
    本文小编为大家详细介绍“web设计模式的适配器模式有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“web设计模式的适配器模式有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。意图将一个类的接口转换成客...
    99+
    2023-06-19
  • Java设计模式之适配器模式
    本文通过老王使用纸质书籍阅读小王使用电子书籍的故事,详细说明设计模式中的结构型设计模式之适配器模式,分别对对象适配器和类适配器代码实现,最后为了加深理解,会列举适配器设计模式在JDK...
    99+
    2024-04-02
  • 使用go实现适配器模式
    目录适配器模式定义代码实现优点缺点适用范围参考适配器模式 定义 适配器模式的英文翻译是Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接...
    99+
    2024-04-02
  • Java设计模式解析之适配器模式怎么实现
    本篇内容介绍了“Java设计模式解析之适配器模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是适配器模式:适配器模式主要用...
    99+
    2023-06-30
  • golang 中的适配器模式
    golang中的适配器模式是一种常用的设计模式,它可以帮助我们将不兼容的接口转换为可兼容的接口。通过适配器,我们可以实现不同系统、不同类之间的互操作性,提高代码的灵活性和复用性。php...
    99+
    2024-02-10
  • 详述PHP适配器模式(附代码示例)
    本篇文章给大家带来了关于php的相关知识,其中主要跟大家聊一聊PHP适配器模式,还有代码示例,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。PHP 适配器模式讲解和代码示例适配器是一种结构型设计模式, 它能使不兼容的对象能够相互合作。适...
    99+
    2023-05-14
    适配器 php 后端
  • JavaScript设计模式适配器模式实例
    前言: 适配器设计模式可以用生活中常用的笔记本电脑来做例子,笔记本使用电压在20v左右,但是我们家用电压在220v左右,所以我们希望用家用电适配对应的笔记本电压,这个时候就需要使用电...
    99+
    2024-04-02
  • Java设计模式中的适配器模式
    目录基本介绍工作原理类适配器模式对象适配器模式接口适配器模式适配器模式的注意事项和细节基本介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口...
    99+
    2024-04-02
  • Java设计模式--适配器模式详解
    目录定义结构示例扩展总结定义 适配器模式用于解决接口间的兼容问题。 当我们需要使用某个类提供的接口,但是这个接口与现在的系统需求不符,由于该接口是由第三方提供的,或者是已经在生产上跑...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作