适配器模式大致分为三类:
类适配器
对象适配器
接口适配器
其中类和对象适配器,很相像,先说类适配器吧
我们这里举个例子,比如手机充电,我们家庭安全电压是220V,而我们的手机只能支持5V电压,就有了我们的充电头也就是我们的适配器,我们可以把电源看做src
经过适配器转换的电压看做dest目标电压,只有我们的手机等于5V我们才能充电
这是我们的电源类
这是我们的转换器接口
而我们具体的适配器需要继承电源类实现我们的转换器接口,(这里有个不好的地方就是我们java中是单继承,所以有一定的局限性,但是我们继承的话也可以重写方法增加其灵活性)
这是具体的适配器,通过调用电源类的给电方法将其220V除以44模拟转换成5V电压的过程
这是我们的手机类,他有一个充电的方法,其中依赖于我们的转换器给其充电,所以我们传入参数类型是IVoltage的适配器接口类型的对象进行判断是否转换成功,如果成功则成功充电.
我们的客户只需要创建一个新的手机,然后执行其充电方法,传入相应我们需要的适配器对象来实现
我觉得适配器最大的作用就是把原本不兼容的接口融合在一起进行工作
对象适配器很像类适配器,也就是不用继承电源类,直接把电源类聚合到我们的对象适配器即可,这样我们的选择就更加多样,因为解决了我们的单继承
实际上在我们的项目里都是利用一个接口利用其方法进行适配,我们可以创建抽象类进行实现接口,然后我们的抽象类可以实现部分方法,我们只需要去覆盖我们所需要的方法进行适配即可.