适配器模式
摘要
本文主要介绍适配器的原理,并给出了代码实现,以及该模式的UML图。通过本文的学习,可以理解适配器模式的原理、模式运用场景,从而在以后的工作学习中使用适配模式。
一、适配器模式
适配器,顾名思义用于匹配统一标准的工具。生活中也存在很多的适配器,比如苹果手机与安卓手机的充电器不同,但我们想用安卓的充电器给苹果手机充电,该如何解决?其中一个解决方案就是买一个转接头,将苹果充电接口变为安卓充电接口,即可用安卓充电器充电。
在上面的例子中,转接头就是一个适配器,它是用于匹配安卓充电接口标准的工具。
适配器的优点:
1、不用重新实现一个具体类,只需实现适配器类;
2、具有解耦的作用,比如适配器实现了苹果手机与苹果充电器的解耦。
二、适配器模式的实现
本节将设计一个场景,并采用适配器模式实现。
2.1 场景设计
有两个学生分别为独立的具体类,有不同的方法,学生Tom正在学习English (learningEnglish()方法)、学生Damon正在学习Computer (learningComputer ()方法)。现在想通过调用Student接口类learning()方法实现调用不同具体类的不同方法,比如对Tom学生调用learning()方法时,显示正在学习English;对Damon学生调用learning()方法时,显示正在学习Computer;
2.2 代码实现
2.2.1 StudentTom.java
package ft.pattern.adapter;
public class StudentTom {
public void learningEnglish() {
System.out.println("I am learning English");
}
}
2.2.2 StudentDamon.java
package ft.pattern.adapter;
public class StudentDamon{
public void learningComputer() {
System.out.println("I am learning Computer");
}
}
2.2.3 Student.java
package ft.pattern.adapter;
public interface Student {
public void learning();
}
2.2.4 AdapterTom.java
package ft.pattern.adapter;
public class AdapterTom extends StudentTom implements Student{
@Override
public void learning() {
this.learningEnglish();
}
}
2.2.5 AdapterDamon.java
package ft.pattern.adapter;
public class AdapterDamon extends StudentDamon implements Student{
@Override
public void learning() {
// TODO Auto-generated method stub
super.learningComputer();
}
}
2.2.6 Main.java
package ft.pattern.adapter;
public class Main {
public static void main(String[] args) {
Student Tom = new AdapterTom();
Student Damon = new AdapterDamon();
Tom.learning();
Damon.learning();
}
}