适配器模式属于结构性设计模式,它也是一种常用的设计模式。

适配器模式

适配器模式很容易理解,从字面意思就知道是用来做适配的。他的作用是将原本不兼容的接口转换为客户期望的接口,使得原本由于接口不兼容而不能一起工作的类能够一起工作。用日常生活中的例子来解释,我们知道手机充电口有好多种,苹果的、安卓的大孔以及小孔,经常我们手机没电借了一个充电器,发现不兼容我们自己的手机孔。现在市场有有充电器的转换头,有了转换头,我们就能够去把手机充电了。

适配器里面三种角色:目标抽象类(Target)、适配者(Adaptee)、适配器(Adaptor)

类适配器以及对象适配器

适配器又分为类适配器以及对象适配器,下面我们通过一个例子来讲解。

下面是类适配器的例子:class ITarget

{

function f1();

function f2();

function f3();

}

class Adaptee

{

public function f1(){……};

public function f2(){……};

public function a(){……};

}

// 类适配器,基于继承

class Adaptor extends Adaptee

{

public function f3 () {

// 重新实现f3

}

}

下面是对象适配器的例子class ITarget

{

function f1();

function f2();

function f3();

}

class Adaptee

{

public function a1(){……};

public function b1(){……};

public function c1(){……};

}

// 对象适配器,基于组合

class Adaptor

{

private $adaptee = null;

public function __contrust (Adaptee $adaptee)

{

$this->adaptee = $adaptee;

……

}

public function f1() {

$this->adaptee->a1();

}

public function f2() {

// 重新实现f2

}

public function f3 () {

$this->adaptee->a3();

}

}

针对这两种实现方式,我们应该去如何选择。如果适配者中绝大部分的方法,都可以复用,那么就选择使用类适配器,否则使用对象适配器。对象适配器更加灵活。

应用场景

下面来介绍下适配器的主要使用场景封装有缺陷的接口设计

统一多个类的接口设计,比如一个支付系统,有三种不同的支付方式,微信支付、支付宝支付、网银支付,这三种支付的实现方法都不一样,那么我们可以用适配器模式,让他们对外具有统一的方法,这样,我们在调用的时候就非常的方便。

兼容老版本的接口,这个在我们系统升级中经常会用到。

php适配器模式应用,什么是适配器模式,它有哪些应用场景相关推荐

  1. 适配器模式、代理模式、装饰器模式使用场景区别

    适配器模式 适配器模式是提供和原先接口不一样的接口,做一个二次转换,原来的接口还是可以继续使用的. 代理模式 原先的接口是不能访问的(无权使用),只能通过代理来去访问原先接口.代理过程中可能会对原有接 ...

  2. python适配器模式角色_python设计模式-适配器模式

    适配器模式主要解决的问题保留旧版本的接口的基础上,新开发的接口能够兼容到旧版本的系统上.其实我们重构旧版本的代码也可以实现相应功能的开发,但是这就违背的了开放与封闭原则,因此我们不会轻易去修改旧代码, ...

  3. java适配器模式应用_java笔记--适配器模式的运用

    适配器模式的运用 主要应用: 可以在符合OCP原则(开笔原则)的基础上,为类增加新的功能. 在现有功能上添加新的功能时无须修改原有功能代码. 主要角色: 目标角色:就是期待得到的接口,如给汽车添加GP ...

  4. 设计模式——6适配器模式(Adapter)

    6.适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器 ...

  5. C#设计模式(7)——适配器模式(Adapter Pattern)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将"将现存的对象" ...

  6. 简述事件接口与事件适配器的联系与区别_设计模式——适配器模式

    适配器模式 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper).适配器模式既可以作为类结构型模式,也 ...

  7. C#设计模式——适配器模式(Adapter Pattern)

    一.概述 在软件开发中,常常会想要复用一个已经存在的组件,但该组件的接口却与我们的需要不相符,这时我们可以创建一个适配器,在需复用的组件的接口和我们需要的接口间进行转换,从而能够正常的使用需复用的组件 ...

  8. Java模式(适配器模式)

    今天看了下Java中的适配器模式,以下就来小做下总结和谈谈感想,以便日后使用. 首先,先来先讲讲适配器.适配就是由"源"到"目标"的适配,而当中链接两者的关系就 ...

  9. 适配器模式(三种)简单使用

    前言 适配器模式是将一个类的接口转换成客户希望的另外一个接口,身边很多东西都是适用于适配器模式的,笔记本的电源(也叫电源适配器),是将220V的交流电转换为笔记本电脑所需要的12V(电流先忽略),笔记 ...

最新文章

  1. php跳转方式带rere_PHP翻页跳转功能实现方法
  2. 弹出模态窗口并传递数值
  3. c语言程序设计 函数说课,《C语言程序设计》之函数说课课件.ppt
  4. 2017.4.25 解方程 思考记录
  5. docker 日志_解决docker容器日志导致主机磁盘空间满了的情况
  6. Blend学习(2) 从对象创建控件
  7. Servlet — 线程安全问题
  8. 苹果mac视觉效果和动态图形设计软件:After Effects 2022 (ae 2022)
  9. MAC硬盘空间减少的隐藏杀手,VM到底是什么?
  10. r语言跟python哪个适合数据分析_R语言 vs Python对比:数据分析哪家强?
  11. xpath获取同级元素 子元素,子元素取父元素等
  12. Unity竖排文字的实现(2019以上新版本可用)
  13. Java用递归计算1加到100
  14. HTML特效代码大全
  15. mysql my.cnf 字符集_my.cnf 中字符集设置
  16. javase printwriter 打印流
  17. matlab %,Matlab
  18. 央视影音大屏版apk下载_cboxtv_2.2.0(央视影音大屏版).apk
  19. JQuery 添加元素(jquery对象),删除元素( .remove())
  20. Python numpy.atleast_3d函数方法的使用

热门文章

  1. sublimelinter校验php,代码校验工具 SublimeLinter 的安装与使用
  2. 一篇博客带你轻松应对java面试中的多线程与高并发
  3. python正则表达式操作指南_Python正则表达式操作指南
  4. JAVA之JVM之内存分配与回收策略(二)
  5. 【转】grep搜索子目录中包含某字符串的特定文件
  6. 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc
  7. 若有代数式,则以下能够正确表示该代数式的c语言表达是是 07年4月,2007年4月全国计算机等级考试二级笔试试卷...
  8. 汉川一中2021高考成绩查询,2021年汉川市高考状元名单资料,今年汉川市高考状元多少分...
  9. maven java jar_在maven中引入本地jar包的方法
  10. mysql 调用webservice_C#调用Webservice的代码实现方式汇总