适配器模式是【结构型】设计模式。
主要作用是将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式分为:类适配器、对象适配器、接口适配器
一 类适配器
通过继承来实现适配器功能。
比如 iphone手机有3.5mm耳机接口(简称 MM3.5),lightning(简称 Light)两个接口。现在有一个3.5mm插头的耳机想接lightning接口的手机,则必须得用适配器来将3.5mm转接为lighting。代码如下
适配器实现A接口,并通过继承获取B接口实现类的方法。这样就可以用A类型的接口方法,获取到B类型接口实现类的结果了。
二 对象适配器
通过类级对象来实现适配功能。
和继承实现适配器的区别如下
通过赋值到类级对象,来引用lightning的功能。
三 抽象类适配器
通过抽象类来适配。
如果接口A有N个方法,如果直接实现它就要重写所有方法。而我们只想用一部分功能,就需要一个抽象类适配器继承这个接口,将接口方法都转为抽象方法。这时再继承这个抽象类,就只需按需重写方法即可。
适配器模式和代理模式的不同
适配器模式是新旧接口的转换,并没有改变功能。给新业务提供新接口,但实现还是老接口的实现。
代理模式是相同接口的功能扩展,新的实现大都比旧的实现功能增加了。