本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一 介绍
适配器模式属于结构型模式。
定义:
将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
两个对象因接口不兼容而不能在一起工作,这时需要第三者进行适配。
适用场景:
系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
二 示例代码
比如外国人发布了一个新的英文技术文档需要我们去学习,我们又看不懂,显然,这个技术文档是无法改变的,这时候我们可以通过翻译器,来把英文技术文档翻译成中文文档来阅读,这个翻译器就是来适配的。
package com.qing.adapter;
public class Document {
public String show(){
return "全英文技术文档";
}
}
package com.qing.adapter;
public interface Translator {
String tranlateShow();
}
package com.qing.adapter;
public class ChineseAdapter implements Translator {
private Document document;
public ChineseAdapter(Document document) {
this.document = document;
}
@Override
public String tranlateShow() {
String result = document.show();
//TODO 转换文档语言....
return result+"展示成中文";
}
}
测试
package com.qing.adapter;
public class Test1 {
public static void main(String[] args) {
String result = new ChineseAdapter(new Document()).tranlateShow();
System.out.println(result);
}
}
结果
注意:
碰到无法改变原有设计和代码的情况时,才考虑适配。
否则,事后控制不如事中控制,事中控制不如事前控制。
就好比关于生病这件事,事前控制肯定是最佳的,或者当病情初起时赶紧治也是好的,但是等到把病情拖严重了,需要动手术的时候,那就是万不得已的时候了。