-
适配器模式
将一个类的接口转换成业务需求的另一个接口,适配器模式使原本两个或多个不兼容的接口可以兼容一起工作。
-
适用性
1)想使用已经存在的接口,而不符合现在的需求。
2)想创建一个可以服用的类,该类可以与不相关类的或不可预知的类协同工作。
3)想使用一些已经存在的子类,而又不想为每个子类新增转换接口,而适配器对象可以适配其父类接口。 -
举例
例如电脑都有一个适配电源,可以接入100-240付的交流电,最终输出到电脑的都是20付的直流电。
-
UML类图
-
代码示例
- 定义一个电源接口,接口的实现电流在100-240付之间。
package com.jin.demo.DesignPatterns.Adapter; /** * 电源接口 * @auther jinsx * @date 2019/6/18 14:03 */ public interface Power { void isPower(); }
- 定义电源接口实现类
package com.jin.demo.DesignPatterns.Adapter; /** * 电源接口实现类 * @auther jinsx * @date 2019/6/18 14:03 */ public class PowerImpl implements Power{ @Override public void isPower(){ System.out.println("调用220付的交流电源"); } }
- 定义一个笔记本接口
package com.jin.demo.DesignPatterns.Adapter; /** * 笔记本接口 * @auther jinsx * @date 2019/6/18 14:07 */ public interface NoteBook { void isNoteBook(); }
- 创建一个适配器,实现了电脑接口,可以转换100-240付交流电为20付直流电。
package com.jin.demo.DesignPatterns.Adapter; /** * 适配器 * @auther jinsx * @date 2019/6/18 14:09 */ public class NoteBookAdapter implements NoteBook { private Power power; public NoteBookAdapter(Power power){ this.power = power; } @Override public void isNoteBook(){ System.out.println("笔记本需要20付直流电源"); power.isPower(); System.out.println("经过处理转成20付直流电源"); } }
- 创建一个测试类
package com.jin.demo.DesignPatterns.Adapter; /** * 测试类 * @auther jinsx * @date 2019/6/18 14:20 */ public class TestNoteBook { public static void main(String[] args){ NoteBook nb = new NoteBookAdapter(new PowerImpl()); nb.isNoteBook(); } }
- 执行测试结果
笔记本需要20付直流电源 调用220付的交流电源 经过处理转成20付直流电源
- 定义一个电源接口,接口的实现电流在100-240付之间。
-
点击Java之23种设计模式查看更多的设计模式
Java设计模式之适配器模式
最新推荐文章于 2025-04-11 18:45:04 发布