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面向对象设计模式

目录
相关文章
|
2月前
|
设计模式 前端开发 Java
【设计模式】【结构型模式】适配器模式(Adpter)
一、入门 什么是适配器模式? 适配器模式是Java中常用的结构型设计模式,它的核心作用就像现实中的电源转换器一样---让原本不兼容的两个接口能够协同工作。 为什么要用适配器模式? 假设我们需要在电商系
91 10
|
9月前
|
设计模式 PHP
PHP中的设计模式:单一职责原则在软件开发中的应用
【10月更文挑战第8天】 在软件开发中,设计模式是解决常见问题的经验总结,而单一职责原则作为面向对象设计的基本原则之一,强调一个类应该只有一个引起变化的原因。本文将探讨单一职责原则在PHP中的应用,通过实际代码示例展示如何运用该原则来提高代码的可维护性和可扩展性。
85 1
|
6月前
|
设计模式 Java 开发者
「全网最细 + 实战源码案例」设计模式——适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,通过引入适配器类将一个类的接口转换为客户端期望的另一个接口,使原本因接口不兼容而无法协作的类能够协同工作。适配器模式分为类适配器和对象适配器两种,前者通过多重继承实现,后者通过组合方式实现,更常用。该模式适用于遗留系统改造、接口转换和第三方库集成等场景,能提高代码复用性和灵活性,但也可能增加代码复杂性和性能开销。
132 28
|
7月前
|
设计模式 JSON 前端开发
前端必须掌握的设计模式——适配器模式
适配器模式是一种结构型设计模式,用于使接口不兼容的对象能够相互合作。通过在客户端和系统之间引入一个“中间层”适配器,将不同类型的输入数据转换为系统能处理的标准格式,减轻系统的负担,提高扩展性和可维护性。例如,MacBook的扩展坞将多种接口(如HDMI、USB)转换为Type-C接口,实现多接口兼容。
|
8月前
|
设计模式 缓存 数据库连接
深入理解PHP的面向对象编程与设计模式####
本文旨在通过实例解析PHP中面向对象编程的核心概念及其在实际开发中的应用,特别是单例模式、工厂模式和观察者模式等常见设计模式。文章将展示这些模式如何帮助开发者构建更加灵活、可维护的代码结构,以及它们在解决具体问题时的优势。 ####
|
8月前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入理解与应用
【10月更文挑战第22天】 在软件开发中,设计模式是解决特定问题的通用解决方案。本文将通过通俗易懂的语言和实例,深入探讨PHP中单例模式的概念、实现方法及其在实际开发中的应用,帮助读者更好地理解和运用这一重要的设计模式。
86 1
|
9月前
|
设计模式 监控 中间件
深入理解PHP中的中间件模式
【10月更文挑战第20天】探索PHP编程世界中的“交通枢纽”——中间件模式。从代码层面剖析如何实现请求和响应的高效管理,以及如何在开发中应用这一模式来增强项目的扩展性和维护性。
|
9月前
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
|
9月前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入解析与实践
在PHP开发中,设计模式是提高代码可维护性、扩展性和复用性的关键技术之一。本文将通过探讨单例模式,一种最常用的设计模式,来揭示其在PHP中的应用及优势。单例模式确保一个类仅有一个实例,并提供一个全局访问点。通过实际案例,我们将展示如何在PHP项目中有效实现单例模式,以及如何利用这一模式优化资源配置和管理。无论是PHP初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和技巧,进而提升自己的编程实践。
|
9月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性和扩展性
【10月更文挑战第13天】 本文将探讨PHP中常见的设计模式及其在实际项目中的应用。通过对比传统编程方式,我们将展示设计模式如何有效地提高代码的可维护性和扩展性。无论是单例模式确保类的单一实例,还是观察者模式实现对象间的松耦合,每一种设计模式都为开发者提供了解决特定问题的最佳实践。阅读本文后,读者将能更好地理解和应用这些设计模式,从而提升PHP编程的效率和质量。