资讯专栏INFORMATION COLUMN

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

周国辉 / 2982人阅读

摘要:适配器模式只要应用于希望复用一些现存的类,但接口又与复用环境要求不一致的情况这是一种亡羊补牢的方法。首选的方法应该是重构代码,统一接口。

定义

将某个对象的接口适配为另一个对象所期望的接口,adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作

使用场景

需要的东西在面前,但却不能用,而短时间又无法改造它,于是就想办法适配

系统的数据和行为都正确,但接口不符时,应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式只要应用于希望复用一些现存的类,但接口又与复用环境要求不一致的情况

这是一种“亡羊补牢”的方法。

首选的方法应该是重构代码,统一接口。

用于 两个类功能相同或相似

在项目中需要使用第三方组件时,常用到此模式

事后控制不如事中控制,事中控制不如事前控制

#原始类,用户期望的接口
class Target{
    public function connect(){
        return "普通连接成功";
    }
}
#需要被适配的类
class Adaptee{
    public function specificConnect(){
        reutrn "特殊连接成功";
    }
}
#适配器
class Adapter extends Target{
    private $Adaptee = new Adaptee();
    public function connect (){
        $Adaptee->SpecificConnect();
    }
}
#***************客户端****************
#适配前
$Target = new Target();
echo $Target->connect();
#适配后
$Target = new Adapter();
echo $Target->connect();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23155.html

相关文章

  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    Dionysus_go 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    vspiders 评论0 收藏0
  • PHP设计模式配器模式

    摘要:简介适配器模式有时候也称包装样式或者包装将一个类的接口适配成用户所期待的。应用场景如程序数据库有关联等操作,而你需要根据情况换数据库操作时,可以使用适配器模式统一接口,这样代码中除了数据库配置之外,就不需要做而外的更改。 简介 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起。 UML 角色 Tar...

    netScorpion 评论0 收藏0
  • PHP基础

    摘要:分别为适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。设计模式五适配器模式适配器模式将某个对象的接生成器和协程的实现在这篇文章中,作者针对那些比较难以理解的概念,以一个更为通俗的方式去讲明白。。 PHP 源码注解 PHP 的详细源码注解 PHP 字符串操作整理 一些有关字符串的常用操作。 Redis 常见七种使用场景 (PHP 实战) 这篇文章主要介绍利用 R...

    HtmlCssJs 评论0 收藏0
  • JS14种设计模式 (6)

    摘要:序列文章面试之函数面试之对象面试之数组的几个不操作面试之对比分析面试之数据结构与算法前言设计模式如果应用到项目中,可以实现代码的复用和解耦,提高代码质量。 showImg(https://segmentfault.com/img/bVbq2VA?w=480&h=260); 序列文章 JS面试之函数(1)JS面试之对象(2)JS面试之数组的几个不low操作(3)JS面试之http0.9~...

    luckyyulin 评论0 收藏0

发表评论

0条评论

周国辉

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<