这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战
前言
最近电脑连接无线网信号不太稳定,网速很慢,想着直接接根网线,这样速度能快点稳定点。网线拉好,发现电脑没有网线水晶头(
RJ45)的插口,只能网上淘一个转换器。在JAVA里如果发现两个类需要互相调用但是又不兼容,这个时候就可以创建一个适配器类来帮我们完成工作,类似与网线的转接头一样。
定义
在两个不兼容的接口之间搭一座桥梁。这种模式属于结构型模式,它结合了这两个独立接口的功能
优点
可以将任何两个没有关联的类一起运行。提高了类的复用性,使得类的运用更加灵活,透明。
缺点
由于JAVA单继承的特性,所以对于目标类必须是抽象类或者接口。
图解
实现
电脑
public class Computer {
// 电脑想通过typeC接口上网,通过typeC连接到转换器
public void linkInternet(RJ45ToTypeC adapter){
// 上网的具体实现,调用转接头的上网功能
adapter.handleRequest();
}
}
RJ45
public class RJ45 {
public void request(){
System.out.println("RJ45连接,完成联网。");
}
}
RJ45ToTypeC
转接头抽象接口
public interface RJ45ToTypeC {
// 处理请求,转接头 <--> RJ45
public void handleRequest();
}
Adapter
// typeC <--> Adapter <--> RJ45
public class Adapter extends RJ45 implements RJ45ToTypeC {
@Override
public void handleRequest() {
// 连接RJ45上网
super.request();
}
}
测试
public class AdapterTest {
public static void main(String[] args) {
Computer computer = new Computer();
RJ45ToTypeC adapter = new Adapter();
computer.linkInternet(adapter);
}
}
打印输出
RJ45连接,完成联网。
说明
我们的电脑想要直接连接网线上网,但是电脑没有RJ45的插口,所以借用适配器转接口,一头连接网线,一头连接电脑,起到中间桥梁的作用,完成信号对接。
总结
当我们有动机的去修改一个正常使用的类时,应该考虑适配器模式,适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。