adapter

adapter

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc 和 mp4 文件。

意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。

何时使用: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。)

如何解决:继承或依赖(推荐)。

关键代码:适配器继承或依赖已有的对象,实现想要的目标接口。

优点: 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。

缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。 2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

使用场景:有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。

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