適配器模式
摘要
本文主要介紹適配器的原理,並給出了代碼實現,以及該模式的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();
}
}