问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是适配器模式,它有哪些应用场景

发布网友 发布时间:2023-08-05 13:21

我来回答

1个回答

热心网友 时间:2024-01-19 09:31


适配器模式属于结构性设计模式,它也是一种常用的设计模式。
适配器模式
适配器模式很容易理解,从字面意思就知道是用来做适配的。他的作用是将原本不兼容的接口转换为客户期望的接口,使得原本由于接口不兼容而不能一起工作的类能够一起工作。用日常生活中的例子来解释,我们知道手机充电口有好多种,苹果的、安卓的大孔以及小孔,经常我们手机没电借了一个充电器,发现不兼容我们自己的手机孔。现在市场有有充电器的转换头,有了转换头,我们就能够去把手机充电了。
适配器里面三种角色:目标抽象类(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();
}
}针对这两种实现方式,我们应该去如何选择。如果适配者中绝大部分的方法,都可以复用,那么就选择使用类适配器,否则使用对象适配器。对象适配器更加灵活。
应用场景
下面来介绍下适配器的主要使用场景
封装有缺陷的接口设计
统一多个类的接口设计,比如一个支付系统,有三种不同的支付方式,微信支付、支付宝支付、网银支付,这三种支付的实现方法都不一样,那么我们可以用适配器模式,让他们对外具有统一的方法,这样,我们在调用的时候就非常的方便。
兼容老版本的接口,这个在我们系统升级中经常会用到。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电视屏幕不亮但有声音是怎么回事 电视只出声音不出画面怎么调 每天做踩单车的运动能瘦腿吗? 踩单车能瘦腿吗 知道踩自行车能瘦腿吗 注意姿势才是关键 踩自行车可以瘦腿吗 踩单车的好处是什么?怎样进行瘦腿? Adobe AIR是什么?能做什么? adobeair是什么软件,可不可以卸载?? 15--18万之间的车 梦见躲在河里的预兆 我在“百度文库”里面下载了几篇文档,但打开时候内容完全一样,财富值都... 我的百度文库中近300个财富值为什么不见了? 重装系统后百度文库的文章和财富值没了怎么办 为什么我的百度文库的财富全没有了,该如何处理? 为什么我的百度文库的财富值没有了?之前还有70多的,而且我上传的文档也... 我之前在百度文库里上传的文档怎么全没了?财富值也由原来的2000多掉到... 为什么百度文库有许多文章都不见了,我上传的文件也消失了,财富值也没... 百度文库财富值丢失 为什么我的百度文库财富丢失了? 什么也没下载 一天... 大学物理,单色光垂直入射到每毫米有500条刻线的光栅上,若第一级谱线... ...纳米的钠黄光垂直照射到每毫米具有500条刻痕的平面透射光栅上时能... 当用钠光(λ=589nm)垂直入射到1mm内有500条刻痕的平面透镜上时,试问... ...黄光(波长=589.3nm)垂直入射到1mm内有500条刻痕的平面光栅上时,最多... 用波长等于590nm的钠黄光垂直照射于每毫米500刻度的光栅上,问:几级明... 若用每毫米刻有500条刻线的光栅观察钠的波长为590nm谱线, ...相信有很多同学都看了吧,这在中国可是火一般 觉得韩剧怎么样 为什么这么多人反对韩剧 韩剧的“遍地开花”算不算文化侵略? 2013年11月上映的电影有哪些 梦见用秤砣砸别人的预兆 梦见那秤砣打女人 梦见爆打别人的头的预兆 巴黎贝甜哪款最好吃 没怀孕梦见自己剖腹产 教师招聘笔试教师职业道德评价的作用 俗语“人贪三样,一生白忙”,三样指哪些?为何会白忙? 四季石榴的栽种技术 办公室工作有什么危害吗? 怎样消除视频中的噪音? 上海铸裕金属材料有限公司怎么样? 嘉裕金融科技(上海)股份有限公司怎么样? 银条的食用方法 健康之道4“为什么抽血检查可以反映全身的健康状况” 在怀孕39周的时候,双顶径有哪些标准? 第一次见网友很紧张 第一次见女网友要怎么办呀?有点害怕,高手教教我啊! 马上要开学了,跟网友见面很紧张怎么办? 可以把包皮翻开,一晚上不翻回去吗? 解散的微信群如何恢复