适配器模式 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章