適配器模式 Adapter Pattern

摘要

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

三、適配器UML圖

適配器模式UML類圖

發佈了21 篇原創文章 · 獲贊 0 · 訪問量 1822
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章