PHP设计模式——适配器模式

简介: 声明:本系列博客参考资料《大话设计模式》,作者程杰。           适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。

声明:本系列博客参考资料《大话设计模式》,作者程杰。

          适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。


        类图:

      

       待适配(ForeignPlayer)角色:此角色的接口规则内部的接口规则不一致,但内部需要调用该角色的方法功能。

       内部接口(IPlayer)角色:这是一个抽象角色,此角色给出内部期待的接口规则。

       适配器(Adapter)角色:通过在内部包装一个Adapter对象,把待适配接口转换成目标接口,此角色为适配器模式的核心角色,也是适配器模式所解决问题的关键。


       代码:

      

<?php
/**
 * Created by PhpStorm.
 * User: Jiang
 * Date: 2015/4/26
 * Time: 12:23
 */
//-------------抽象接口---------------
/**抽象运动员
 * Interface IPlayer
 */
interface IPlayer
{
    function Attack();
    function Defense();
}

/**前锋
 * Class Forward
 */
class Forward implements IPlayer
{

    function Attack()
    {
        echo "前锋攻击<br/>";
    }

    function Defense()
    {
        echo "前锋防御<br/>";
    }
}

/**中锋
 * Class Center
 */
class Center implements IPlayer
{

    function Attack()
    {
        echo "中锋攻击<br/>";
    }

    function Defense()
    {
        echo "中锋防御<br/>";
    }
}

//--------------待适配对象-----------
/**姚明                 外籍运动员
 * Class Yaoming
 */
class Yaoming
{
    function 进攻()
    {
        echo "姚明进攻<br/>";
    }

    function 防御()
    {
        echo "姚明防御<br/>";
    }
}

//------------适配器--------------
/**适配器
 * Class Adapter
 */
class Adapter implements IPlayer
{
    private $_player;

    function __construct()
    {
        $this->_player=new Yaoming();
    }

    function Attack()
    {
        $this->_player->进攻();
    }

    function Defense()
    {
        $this->_player->防御();
    }
}

         客户端测试代码:

        

header("Content-Type:text/html;charset=utf-8");
//------------------------原型模式测试代码------------------
require_once "./Adapter/Adapter.php";

$player1=new Forward();

echo "前锋上场:<br/>";
$player1->Attack();
$player1->Defense();

echo "<hr/><br/>";

echo "姚明上场:<br/>";
$yaoming=new Adapter();
$yaoming->Attack();
$yaoming->Defense();

适用场景

1.接口中规定了所有要实现的方法

2.但要有一个实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。

注意事项

1充当适配器角色的类就是实现已有接口的抽象类

2.为什么要用抽象类:

此类是不要被实例化的。而只充当适配器的角色,也就为其子类提供了一个共同的接口,但其子类又可以将精力只集中在其感兴趣的地方。


欢迎关注我的视频课程,地址如下,谢谢。


   PHP面向对象设计模式

目录
相关文章
|
16天前
|
设计模式 数据库连接 PHP
PHP编程中的面向对象与设计模式
在PHP编程世界中,掌握面向对象编程(OOP)和设计模式是提升代码质量和开发效率的关键。本文将深入浅出地介绍如何在PHP中应用OOP原则和设计模式,以及这些实践如何影响项目架构和维护性。通过实际案例,我们将探索如何利用这些概念来构建更健壮、可扩展的应用程序。
|
29天前
|
设计模式 存储 SQL
PHP中的设计模式:单例模式的探索
在PHP开发中,单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。本文将通过一个简单的例子,逐步引导你理解如何在PHP中实现和利用单例模式,以及它在实际项目中的应用价值。
|
13天前
|
中间件 PHP 开发者
深入理解PHP中的中间件模式
【8月更文挑战第29天】本文旨在通过探讨PHP中间件模式的实现,帮助读者掌握如何构建可扩展且易于维护的应用。文章不仅解释了中间件概念,还提供了代码示例,并分析了其优势和应用场景。阅读本文后,你将能够更有效地使用中间件来优化你的PHP项目结构。
|
11天前
|
设计模式 JavaScript 中间件
探索PHP中的中间件模式
【8月更文挑战第31天】本文将带你领略PHP编程世界中的“交通枢纽”——中间件模式。我们将从中间件的概念出发,逐步深入到如何在PHP项目中实现并应用这一设计模式。通过实际代码示例,你将学会如何构建自己的中间件,以及如何利用它们来简化项目结构、增强代码可读性和可维护性。准备好了吗?让我们一起走进PHP中间件的世界,解锁更多可能!
|
1月前
|
安全 BI PHP
php前后端分离,仓储模式r的医院不良事件上报系统源码
此医院安全不良事件管理系统采用前后端分离架构(PHP+Laravel8+Vue2+Element),实现事件上报至解决的全流程管理。系统支持结构化上报、数据自动引用、智能流程及预警,配备质控分析工具生成各类报表。通过PDCA闭环管理,确保事件得到有效处置并预防再发,同时提供便捷上报通道,优化上报效率。
php前后端分离,仓储模式r的医院不良事件上报系统源码
|
23天前
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
10天前
|
设计模式 前端开发 PHP
PHP中实现简易的MVC模式
【8月更文挑战第31天】 本文将引导你了解如何在PHP中应用MVC(Model-View-Controller)架构模式,通过一个简单的例子展示其实现过程。我们将从基础的概念出发,逐步深入到代码实践,最终让你能够自己动手构建一个简易的MVC框架。文章不仅提供理论知识,还包含具体的代码示例,帮助你更好地理解并运用MVC模式。
|
10天前
|
设计模式 缓存 中间件
深入理解PHP中的中间件模式
【8月更文挑战第31天】 在PHP开发中,中间件模式是一种优雅的架构设计,它允许开发者以非侵入式的方式扩展应用程序的功能。本文将通过一个简单的示例,展示如何在PHP中实现和使用中间件,以及这种模式如何提高代码的可维护性和可测试性。
|
10天前
|
设计模式 中间件 测试技术
深入理解PHP中的中间件模式
【8月更文挑战第31天】 在软件开发的海洋里,设计模式犹如灯塔指引着开发者的方向。本文将带你驶向一个特别的岛屿——PHP中间件模式,探索它如何简化代码、增强可读性与可维护性。我们将通过实际编码示例,展示如何在PHP中实现中间件模式,并讨论其对项目架构的影响。准备好了吗?让我们启航吧!
|
11天前
|
设计模式 中间件 PHP
深入理解PHP中的中间件模式
【8月更文挑战第31天】本文旨在通过深入浅出的方式,向读者展示如何在PHP中实现和利用中间件模式来增强代码的可维护性和扩展性。文章将介绍中间件模式的基本概念、核心价值以及如何将其应用于PHP项目。我们将从一个简单的例子出发,逐步构建起一个灵活且强大的中间件系统。无论你是PHP新手还是资深开发者,这篇文章都将为你提供新的视角和实用工具,让你的项目更加健壮和易于管理。
下一篇
DDNS