将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作
适配器模式分为:类适配器、对象适配器、接口适配器
类适配器模式的代码如下:
Target:给手机充电目标类
Adaptee:被适配者,交流电压220v
Adapter:适配器,将220v的交流电压转为5v
测试类:
类图如下:
对象适配器模式的代码如下:
Target:给手机充电目标类
Adaptee:被适配者,交流电压220v
Adapter:适配器,将220v的交流电压转为5v
测试结果:
类图如下:
区别:
- 在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。
- 对象适配器更符合设计模式中的合成复用原则,尽量避免使用继承
接口适配器:
当不需要实现一个接口所提供的所有方法时,可以设计一个抽象类实现该接口,并为每个接口提供一个默认实现,那么该抽象类的子类可以选择性覆盖父类中的方法,它适用于不想使用一个接口中的所有方法的情况,又称为单接口适配器模式。
demo:
简单的理解就是当适配者(Adaptee)有大量的方法时,那么每个适配器(Adapter)都要去实现接口中的这些方法,这样就感觉太费劲。所以这种情况下,可以考虑实现个默认的适配器,然后根据实际目标角色接口的类集成这个默认适配器,然后选择性的实现默认适配器中的一些方法。