设计模之适配器模式-TOUCH ME漫画

适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。

你可以创建一个适配器。 这是一个特殊的对象, 能够转换对象接口, 使其能与其他对象进行交互。

适配器模式通过封装对象将复杂的转换过程隐藏于幕后。 被封装的对象甚至察觉不到适配器的存在。 例如, 你可以使用一个将所有数据转换为英制单位 (如英尺和英里) 的适配器封装运行于米和千米单位制中的对象。

适配器不仅可以转换不同格式的数据, 其还有助于采用不同接口的对象之间的合作。 它的运作方式如下:

1. 适配器实现与其中一个现有对象兼容的接口。

2. 现有对象可以使用该接口安全地调用适配器方法。

3. 适配器方法被调用后将以另一个对象兼容的格式和顺序将请求传递给该对象。

4. 有时你甚至可以创建一个双向适配器来实现双向转换调用。

对象适配器

实现时使用了构成原则: 适配器实现了其中一个对象的接口, 并对另一个对象进行封装。 所有流行的编程语言都可以实现适配器。

类适配器

这一实现使用了继承机制: 适配器同时继承两个对象的接口。 请注意, 这种方式仅能在支持多重继承的编程语言中实现, 例如 C++。

适配器模式适合应用场景

当你希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用适配器类。适配器模式允许你创建一个中间层类, 其可作为代码与遗留类、 第三方类或提供怪异接口的类之间的转换器。

 如果您需要复用这样一些类, 他们处于同一个继承体系, 并且他们又有了额外的一些共同的方法, 但是这些共同的方法不是所有在这一继承体系中的子类所具有的共性。你可以扩展每个子类, 将缺少的功能添加到新的子类中。 但是, 你必须在所有新子类中重复添加这些代码, 这样会使得代码有坏味道。将缺失功能添加到一个适配器类中是一种优雅得多的解决方案。 然后你可以将缺少功能的对象封装在适配器中, 从而动态地获取所需功能。 如要这一点正常运作, 目标类必须要有通用接口, 适配器的成员变量应当遵循该通用接口。 这种方式同装饰模式非常相似。

实现方式

1.确保至少有两个类的接口不兼容:

一个无法修改 (通常是第三方、 遗留系统或者存在众多已有依赖的类) 的功能性服务类。

一个或多个将受益于使用服务类的客户端类。

2. 声明客户端接口, 描述客户端如何与服务交互。

3. 创建遵循客户端接口的适配器类。 所有方法暂时都为空。

4. 在适配器类中添加一个成员变量用于保存对于服务对象的引用。 通常情况下会通过构造函数对该成员变量进行初始化, 但有时在调用其方法时将该变量传递给适配器会更方便。

5. 依次实现适配器类客户端接口的所有方法。 适配器会将实际工作委派给服务对象, 自身只负责接口或数据格式的转换。

6.客户端必须通过客户端接口使用适配器。 这样一来, 你就可以在不影响客户端代码的情况下修改或扩展适配器。

Java 示例代码:

public class AdapterPattern {

    public static void main(String[] args) {

        USB usb = new Adapter();

        usb.Request();

    }

}

class USB {

    public void Request() {

        System.out.println("USB数据线");

    }

}

class Adapter extends USB {

    private TypeC typeC = new TypeC();

    @Override

    public void Request() {

        typeC.SpecificRequest();

    }

}

class TypeC {

    public void SpecificRequest() {

        System.out.println("Type-C数据线");

    }

}

[Shooting Stars(サク)] ゆきくも不知火-kk
2021-05-25
【黑猫猫OvO】 圣诞 [14P 119M]
2021-02-06
【Shouko】 Komi [78P 563MB]
2022-12-26
萌狗吉娃娃表情包:是真的狗!
2020-05-26
哈喽(,,・∀・)ノ゛鸭❤欢迎再次光临,花卷儿与卷毛的测评小栏目《老大的快乐我不懂》系列~,这期是饮料开箱特辑,满眼全是水,喝成水饱,节省午饭,还有一大堆罐头开,完美!
2022-10-28
兔子Zzz不吃胡萝卜 玉龙赋[27P-258MB]
2023-05-22
[MyGirl美媛馆] 2015.04.02 VOL.112 刘飞儿Faye [72P313MB]
2023-05-29
萌娘资源专业站点,致力于传播二次元文化,万物皆可萌
2023-05-19
萌娘资源专业站点,致力于传播二次元文化,万物皆可萌
2023-05-19
——不知不觉中国动画已是百年,一路走来,筚路蓝缕,白手起家探索时期多少艰辛与困苦,多少热爱与幸福,由两句话写尽了。这首歌好怀旧,温馨的叙事感,听着听着不自觉脸上浮起微笑,想起小时候的日子了。像嘈杂喧嚣的都市里一片心灵的净土,让你静下来,让车水马龙暂停脚步,重拾起内心真实的感受,回想起生活中的小美好。深深温柔清亮又甜美的声音太美好了,这声音是多难得的宝藏啊,沁人心脾,带给人浅浅柔柔的幸福感,像坠入幸福的网。还有咬字太美了。他好适合这种温情有叙事感的歌,之前的光字片和花开忘忧也是这种。看来唱完光字片
2022-09-29