十五 設計模式之介面卡模式(結構型)(重要)

2021-09-13 22:47:37 字數 2223 閱讀 8099

adapter模式也叫介面卡模式,是構造型模式之一,通過adapter模式可以改變已有類(或外部類)的介面形式。

舉個例子:我們使用電腦,家裡的電源是220v的,而我們的電腦是18v的,這時如果我們直接把電源連線電腦,一定會導致電腦被燒壞,因為電源電壓太高了,這時我們就需要乙個電源介面卡,連線在電源與電腦之間,通過介面卡進行乙個降壓,來保證電腦的正常工作。

增加介面卡

用**實現:

首先如果不使用介面卡的話

新建乙個220v電源

//220v電源

public

class

powersupply

}

新建乙個膝上型電腦,使用電源

//膝上型電腦使用220v電源

public

class

computer

}

這樣膝上型電腦就直接使用了220v電壓,但是這樣的話,膝上型電腦會直接燒毀,無法使用,因為電壓太高了,所以我們需要在中間接乙個介面卡,以達到降壓的目的

介面卡繼承220v電壓

//介面卡

public

class

adapter

extends

powersupply

}

膝上型電腦通過介面卡呼叫電源

//膝上型電腦通過介面卡使用220v電源

public

class

computer

}

結果如下:

可以看到,通過這種形式,我們使用的還是之前的那個電源,但是通過介面卡,電壓就降到了18v,電腦就可以正常使用了。

但是這只是介面卡模式的其中一種形式。

下面更詳細的說明一下介面卡模式

在大規模的系統開發過程中,我們常常碰到諸如以下這些情況:

我們需要實現某些功能,這些功能已有還不太成熟的乙個或多個外部元件,如果我們自己重新開發這些功能會花費大量時間;所以很多情況下會選擇先暫時使用外部元件,以後再考慮隨時替換。但這樣一來,會帶來乙個問題,隨著對外部元件庫的替換,可能需要對引用該外部元件的源**進行大面積的修改,因此也極可能引入新的問題等等。如何最大限度的降低修改面呢?

adapter模式就是針對這種類似需求而提出來的。adapter模式通過定義乙個新的介面(對要實現的功能加以抽象),和乙個實現該介面的adapter(介面卡)類來透明地呼叫外部元件。這樣替換外部元件時,最多只要修改幾個adapter類就可以了,其他源**都不會受到影響。

簡單來說:

1、 系統需要使用現有的類,而這些類的介面不符合系統的需要。

2、 想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。

3、 需要乙個統一的輸出介面,而輸入端的型別不可預知。

這種形式,就是我們剛才舉的例子

client:就是膝上型電腦(computer)

target:就是膝上型電腦中呼叫的方法(adapter.powersupply18v())

adaptee:就是220v電壓(powersupply)

adapter:就是介面卡(adapter)

第二種模式,只需修改介面卡與電腦即可

介面卡不再繼承電源,而是當成乙個成員變數

//介面卡

public

class

adapter2

public

void

powersupply18v()

}

電腦

//膝上型電腦通過介面卡使用220v電源

public

class

computer

}

一般,使用第二種委讓形式更多一些,因為這種方式不必繼承,使用成員變數更加的靈活。

設計模式 結構型之介面卡模式

將無法直接使用的類的行為委託給乙個新的類,這種類結構叫介面卡模式 該方式適合類中不符合期望的介面數量不多的情況 該方式主要由3部分組成 原始類 public class origin public void dosthb 介面類 public inte ce idapter 介面卡類 public ...

設計模式 結構型 介面卡模式

什麼是介面卡模式 將乙個介面轉換成客戶希望的另乙個介面,使介面不相容的那些類可以一起工作。介面卡模式既可以作為類結構型模式,也可以作為物件結構型模式。介面卡的分類 介面卡中有類介面卡和物件介面卡,兩者的區別在於介面卡與適配者的關係不同,物件介面卡中兩者之間的關係是關聯關係,類介面卡模式中兩者是繼承關...

設計模式 結構型 介面卡

pragma once ifndef adapter h define adapter h 需要被adapt 的類 class target virtual target virtual void request 0 與被adapt 物件提供不相容介面的類 class adaptee adaptee...