设计模式学习笔记十九、适配器模式概念

一、问题

1、多功能充电器

2、多功能转换插头(适配器)

二、介绍

1、适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一类接口表示。主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协调工作。其别名为包装器(Wrapper)

2、适配器模式属于结构型模式

3、主要分为三类:类适配器模式、对象适配器模式、接口适配器模式

三、适配器工作原理

1、适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容。

2、从用户角度看不到被适配者,是解决耦合。

3、用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。

4、用户收到反馈结果,感觉只是和目标接口交互。

四、适配器

1、类适配器:Adapter,通过继承src类,实现dst接口, 完成src => dst 的适配

2、注意事项:

缺点

java 类是单继承的,所以适配器需要继承src类这一点可以说是一个缺点,因为这要求dst必须是接口,有局限性。

src类的方法在Adapter中都会暴漏出来,也增加了成本。

优点

由于其继承了src类,所以可以根据需要重写src方法,使得Adapter类的灵活性增强了。

代码演示

 

1、对象适配器模式

a:原理和类适配器模式相同,只是将Adapterl类作修改,不是继承src类,而是持有src类的实例,以解决兼容性的问题。持有src类,实现dst接口。完成src => dst 的适配。

b:根据合成复用原则、在系统中尽量使用关联关系来代替继承关系,因此大部分结构型模式都是对象结构型模式。

c:对象适配器模式是适配器模式常用的一种。

d:使用成本低、更灵活。

f:对象适配器和类适配器其实算是同一种思想,实现方式不同。根据合成复用原则,使用组合代替继承,解决了类适配必须继承src的局限性,也不在要求dst 必须是接口。

代码演示

1、接口适配器模式

a:适配器或缺省适配器模式(Default Adapter Pattern)

b:当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个实现(空方法),那么该抽象类的子类可以有选择地覆盖父类的某些方法来实现需求。

c: 适用于一个接口不想使用其所有的方法情况。

代码演示

                   

 


版权声明:本文为qq_40996741原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。