设计模式-适配器模式
目录
[TOC]
什么是适配器模式
适配器模式是一种结构型设计模式。它的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
在适配器模式中,我们通过增加一个新的适配器类来解决接口兼容问题。这个新的适配器类会持有一个或多个目标对象,并且将这些目标对象转换成客户端所期望的另一种接口。
应用场景
- 当需要使用一个现存的类,但它提供的接口与我们系统的接口不兼容,而我们还不能修改它时
- 当多个团队独立开发系统的各功能模块,然后组合在一起,但由于某些原因事先不能确定接口时
UML类图
适配器模式只有3个角色
- Target
是一个接口,它是我们客户端使用的目标接口
- Adaptee
我们想要使用的接口与Target
不兼容的类,它可以是一个接口,也可以是一个类。
- Adapter
适配器类,此模式的核心。它需要实现目标接口Target
,而且必须要引用Adaptee
,因为我们要在此类中包装Adaptee
的功能
代码
目标接口
系统原来的日志接口如下
1 | /** |
三方库接口及实现
下面是第三方库提供的日志功能,但是其接口与原系统目前使用的不兼容。
1 | /** |
1 | /** |
构建适配器类
1 | import java.util.Objects; |
测试
1 | public class AdapterClient { |
总结
优点:
- 提高代码复用性:适配器模式通过将一个类的接口转换成客户端所期望的接口,可以让原本不兼容的类能够协同工作,从而提高代码的复用性。
- 提高系统灵活性:适配器模式可以将不同的类的接口统一起来,从而使得系统更加灵活,能够适应各种变化。
- 符合开闭原则:适配器模式可以在不修改现有代码的情况下添加新功能,从而符合开闭原则。
缺点:
- 增加代码复杂度:适配器模式需要增加一个适配器类来实现接口转换,这会增加代码的复杂度。
- 降低代码可读性:适配器模式可能会让代码的逻辑变得更加复杂,降低代码的可读性和可维护性。
- 可能会影响系统性能:适配器模式需要进行额外的类型转换和接口转换,这可能会影响系统的性能。
总之,适配器模式是一种非常有用的设计模式,它可以帮助我们将现有的代码与其他代码或系统集成起来,从而提高软件系统的灵活性和可维护性。但是,在使用适配器模式时,需要权衡其优缺点并进行适当的设计和实现。
评论