Java設計模式----適配器模式

本文以一隻殘廢狗爲例,狗本身應該有吃和跑兩個能力,但是該狗只有吃的能力,通過適配器模式實現狗可以跑的功能.

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