- 将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,适配器模式分为类结构型模式(继承)和对象结构型模式(组合)两种,前者(继承)类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。
- 别名也可以是Wrapper,包装器
- 适配器模式(Adapter)包含以下主要角色
- 目标(Target)接口:可以是抽象类或接口。客户希望直接用的接口
- 适配者(Adaptee)类:隐藏的转换接口
- 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口。
/** * 目标接口 */public class MoviePlayer implements Player { @Override public String play() { System.out.println("正在播放:宋老师的宝贵时间.avi"); String content = "你好"; System.out.println(content); //并且打印出字幕 return content; }}
/** * 设配器 */public class JPMoviePlayerAdapter implements Player { //组合的方式 private Translator translator = new Zh_JPTranslator(); private Player target;//被适配对象 public JPMoviePlayerAdapter(Player target) { this.target = target; } @Override public String play() { String play = target.play(); //转换字幕 String translate = translator.translate(play); System.out.println("日文:" + translate); return play; }}
/** * 适配者 */public class Zh_JPTranslator implements Translator{ @Override public String translate(String content) { if("你好".equals(content)){ return "空尼几哇"; } if ("什么".equals(content)){ return "纳尼"; } return "*******"; }}

应用场景
- Tomcat如何将Request流转为标准Request;
- tomcat.Request接口
- servlet.Request接口
- tomcat === CoyoteAdapte === ServletRequest
- Spring AOP中的AdvisorAdapter是什么:增强的适配器
- 前置、后置、返回、结束 Advisor(通知方法)
- 底层真的目标方法
- Spring MVC中经典的HandlerAdapter是什么;
- HelloController.hello()
- HandlerAdapter
- Servlet.doGet()
- SpringBoot 中 WebMvcConfigurerAdapter为什么存在又取消