1. 程式人生 > >Java設計模式(七):介面卡設計模式

Java設計模式(七):介面卡設計模式

1. 應用場景

在軟體開發中,也就是系統的資料和行為都正確,但介面不相符時,我們應該考慮用介面卡,目的是使控制範圍之外的一個原有物件與某個介面匹配。介面卡模式主要應用於希望複用一些現存的類,但是介面又與複用環境要求不一致的情況。比如在需要對早期程式碼複用一些功能等應用上很有實際價值。適用場景大致包含三類:

  1. 已經存在的類的介面不符合我們的需求;
  2. 建立一個可以複用的類,使得該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作;
  3. 在不對每一個都進行子類化以匹配它們的介面的情況下,使用一些已經存在的子類。

2. 概念

將一個類的介面,轉換成客戶期望的另一個介面。介面卡讓原本介面不相容的類可以合作無間。

在這裡插入圖片描述

3. Class Diagram

介面卡設計模式類定義中包括被介面卡類,介面卡類。

在這裡插入圖片描述

Implementation

鴨子(Duck)和火雞(Turkey)擁有不同的叫聲,Duck 的叫聲呼叫 quack() 方法,而 Turkey 呼叫 gobble() 方法。

要求將 Turkey 的 gobble() 方法適配成 Duck 的 quack() 方法,從而讓火雞冒充鴨子!

public interface Duck {
    void quack();
}
public interface Turkey {
    void gobble();
}
public class WildTurkey implements Turkey {
    @Override
    public void gobble() {
        System.out.println("gobble!");
    }
}
public class TurkeyAdapter implements Duck {
    Turkey turkey;

    public TurkeyAdapter(Turkey turkey) {
        this
.turkey = turkey; } @Override public void quack() { turkey.gobble(); } }
public class Client {
    public static void main(String[] args) {
        Turkey turkey = new WildTurkey();
        Duck duck = new TurkeyAdapter(turkey);
        duck.quack();
    }
}

JDK