适配器模式的主要作用是代码重用. 当代码库中已有的代码基本满足需求, 但是接口与需求不匹配, 这时可以用适配器模式来进行接口转换.
实现过程也很简单, 就是把已有的对象作为成员变量, 然后把请求都委托给它.
这里不再对代码和UML进行说明, 需要的话参考:适配器模式
下面说明一下关于设计模式实现的一些基本套路:
1. 继承: 有问题找父母.
2. 组合: 有问题找其他人帮你做.
继承的缺点很明显, 父母的个数是有限的, 那么你的能力就被父母限制了.
组合的优点在于, 你做事情只需要委托给合适的人就可以了, 那么你的能力就是无限的.
这也就是”组合优于继承”的原因, 而在设计模式中, 这个原则的应用非常明显:
上图就是常用的设计模式, 其中类模式使用的是继承, 对象模式使用的是组合. 从中可以看出组合的使用是远远大于继承的.
那么如何选择? 是不是应该只用组合不用继承呢?
其实不然, 在一些简单的, 需求不易变的场景, 使用继承还是可以简化整体的设计, 当继承成为你的限制时, 再把它升级为组合.