本文以一隻殘廢狗爲例,狗本身應該有吃和跑兩個能力,但是該狗只有吃的能力,通過適配器模式實現狗可以跑的功能.
1. 類適配器
1.1 先創建一個狗的接口,具有跑和吃兩個方法
/**
* 定義狗接口,具備2個功能
* 1- 狗能跑
* 2- 狗能吃
*/
public interface Dog {
public void run();
public void eat();
}
1.2 實際有殘疾狗只能吃
/**
* 定義殘廢狗
* 殘廢狗只能吃
*/
public class DisabledDog {
public void eat(){
System.out.println("Dog can eat!");
}
}
1.3 殘疾狗的適配器
/**
* 創建適配器
* 1- 殘廢狗使用了適配器(安裝假肢)
* 2- 殘廢狗實現了狗類接口
*/
public class Adapter extends DisabledDog implements Dog{
@Override
public void run() {
System.out.println("Dog can run!");
}
// 殘廢狗本身就能吃,所以殘廢狗不需要實現狗接口的吃方法
}
1.4 殘廢狗使用適配器
/**
* 定義使用類
* 殘廢狗嘗試跑和吃
*/
public class Play {
public static void main(String[] args) {
// 殘廢狗裝載適配器(假肢)
Dog dog = new Adapter();
dog.eat();
// 殘廢狗嘗試跑
dog.run();
}
}
2. 方法適配器
2.1 殘疾狗的適配器
將1.3的適配器修改
/**
* 創建適配器
* 1- 殘廢狗使用了適配器(安裝假肢)
* 2- 殘廢狗實現了狗類接口
*/
public class AdapterBox implements Dog{
// 殘廢狗來看醫生
private DisabledDog disabledDog;
// 給殘廢狗使用的適配器
public AdapterBox(DisabledDog disabledDog){
super();
this.disabledDog = disabledDog;
}
// 狗醫生通過適配器幫助殘廢狗實現跑
@Override
public void run() {
System.out.println("Dog can run!");
}
// 狗自己實現吃
@Override
public void eat() {
disabledDog.eat();
}
}