[toc]
适配器模式#
当你试图引入一个外部jar包的api时, 担心这个jar包以后会换成别的, 或者因为包版本经常更新,api可能会变。
这时候可以用一个adpter来适配一下, 把这个api封装到自己的adpter里,然后再通过adapter提供给自己的代码使用。
注意第三方调用的方法名不是request,这就是经常会变动的地方,所以我们封住到adpter里使用。
Q: 类适配器模式和对象适配器模式的区别?#
A:
类适配器: 本身继承自需要适配的那个对象
对象适配器: 把需要适配的对象作为成员
Q: 适配器模式的优点?#
A:
- 增加了调用类的透明性和复用性。 调用者无需关心内部实现,且容易复用给其他模块
- 灵活性和扩展性非常好, 内部api升级修改时,无需引发扩散修改。
通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合“开闭原则”。
Q: 类适配器模式和对象适配器哪个好?为什么#
A:
建议用对象适配器,类适配器的限制较多。
类适配器的缺点:
- 对于Java、C#等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者;
- 适配者类不能为最终类,如在Java中不能为final类,C#中不能为sealed类;
- 在Java、C#等语言中,类适配器模式中的目标抽象类只能为接口,不能为类,其使用有一定的局限性。
Q: 讲一下适配器模式的应用#
A: