适配器模式
适配器模式
定义
适配器模式的作用是解决两个软件实体间的接口不兼容的问题,使用适配器模式之后,原本由于接口不兼容而不能工作的两个软件实体便可以一起工作
适配器的别名是包装器(wrapper),在程序开发中有很多这样的场景,当试图嗲用模块或者对象的某个接口时,却发现这个接口的格式并不符合当前的需求,这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者拿到的模块是一段别人编写的经过压缩的代码,修改原接口就显得不太现实了,第二种办法是创建一个适配器,将原接口转换为客户希望的一个接口,客户只需要和适配器交互就行了
现实用例
- 港式插头转换器:港式的电器插头比大陆的电器插头要大一些,如果从香港买了一个 mac book,会发现充电器无法插在家里的插座上,为此而改造家里的插座显然不方便,所以需要一个适配器
- 电源适配器:mac book 电池支持的电压是 20V ,日常生活中的交流电压一般是 220 V,除了国内,国外的电压也不同,笔记本电脑的电源适配器就承担了转换电压的作用,电源适配器使笔记本电脑在 100V-240V 的电压内都能正常工作,这就是为什么被称为电源“适配器”的原因
应用
如果现有的接口已经能够正常工作,那永远都不会用上适配器模式,适配器模式是一种“亡羊补牢”的模式,没有人会在程序设计之初九使用它,假如未来的某天不再适用于新系统,那么就可以用适配器模式把旧接口包装成一个新的接口
小结
适配器与一些模式结构非常相似,比如装饰者模式、代理模式,这些模式都属于“包装模式”,都是由一个对象来包装另一个对象,区别它们的关键任然是模式的意图
适配器模式主要用来解决两个已有接口之间不匹配的问题,它不考虑这些接口是增氧实现的,也不考虑它们将来可能会如何演化,适配器模式不需要改变已有的接口,就能够使他们协同作用
装饰者模式和代理模式也不会改变原有对象的接口,但装饰者模式的作用是为了给对象增加功能,装饰者模式常常形成一条长的装饰链,而适配器模式通常只包装一次,代理模式是为了控制对象的访问,通常也只包装一次
适配器模式
http://blog.climbed.online/2023/11/24/Web -- Knowledge is infinite/编程思想/设计模式/适配器模式/