設計模式 介面卡模式 門面模式

2021-10-25 08:41:55 字數 1275 閱讀 1775

介面卡模式定義如下:將乙個類的介面變換成客戶端期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。介面卡模式和裝飾模式有一定的相似性,都起包裝的作用,但二者本質上又是不同的,裝飾模式的結果,是給乙個物件增加了一些額外的職責,而介面卡模式,則是將另乙個物件進行了「偽裝」。

介面卡可以認為是對現在業務的補償式應用,所以,盡量不要在設計階段使用介面卡模式,在兩個系統需要相容時可以考慮使用介面卡模式。

優點:1、介面卡模式可以讓兩個介面不同,甚至關係不大的兩個類一起執行;

2、提高了類的復用度,經過「偽裝」的類,可以充當新的角色;

3、介面卡可以靈活「拆卸」。

應用場景:

1、不修改現有介面,同時也要使該介面適用或相容新場景業務中,適合使用介面卡模式。例如,在乙個嵌入式系統中,原本要將資料從flash讀入,現在需要將資料從磁碟讀入,這種情況可以使用介面卡模式,將從磁碟讀入資料的介面進行「偽裝」,以從flash中讀資料的介面形式,從磁碟讀入資料。

1、介面卡模式與原配介面相比,畢竟增加了一層呼叫關係,所以,在設計系統時,不要使用介面卡模式。

門面模式也叫外觀模式,定義如下:要求乙個子系統的外部與其內部的通訊必須通過乙個統一的物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。門面模式注重「統一的物件」,也就是提供乙個訪問子系統的介面。

門面模式與之前說過的模板模式有類似的地方,都是對一些需要重複方法的封裝。但從本質上來說,是不同的。模板模式是對類本身的方法的封裝,其被封裝的方法也可以單獨使用;而門面模式,是對子系統的封裝,其被封裝的介面理論上是不會被單獨提出來用的。

優點:1、減少了系統之間的相互依賴,提高了系統的靈活;

2、提高了整體系統的安全性:封裝起的系統對外的介面才可以用,隱藏了很多內部介面細節,若方法不允許使用,則在門面中可以進行靈活控制。

使用場景:

1、為乙個複雜的子系統提供乙個外界訪問的介面。這類例子是生活還是蠻常見的,例如電視遙控器的抽象模型,電信運營商的使用者互動裝置等;

2、需要簡化操作介面時。例如常見的扁平化系統操作介面等,在生活中和工業中都很常見。

1、門面模式的缺點在於,不符合開閉原則,一旦系統成形後需要修改,幾乎只能重寫門面**,這比繼承或者覆寫等方式,或者其它一些符合開閉原則的模式風險都會大一些。

歸類 : python--設計模式

設計模式 門面模式 介面卡模式 裝飾器模式

9.介面卡 adapter 應用場景 優點10.裝飾者 decorator 設計原則 應用場景 優點提供了乙個統一的介面,用來訪問子系統中的一群介面,從而讓子系統更容易使用。電影需要操作很多電器,使用門面模式實現一鍵看電影功能。public class subsystem public void s...

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

介面卡模式和門面模式是2種使用比較多的結構型設計模式。介面卡模式的作用是讓原本不相容的介面適配成可以一起使用的介面,比如我們生活中的usb轉接頭。1.介面卡模式 假如有下面乙個業務,要做一道泡茶的工序,包括洗茶具 洗茶葉 泡茶3步,現在的2段 分別是用a茶具泡普洱茶和用b茶具泡龍井茶 public ...

TypeScript設計模式之門面 介面卡

看看用typescript怎樣實現常見的設計模式,順便複習一下。學模式最重要的不是記uml,而是知道什麼模式可以解決什麼樣的問題,在做專案時碰到問題可以想到用哪個模式可以解決,uml忘了可以查,思想記住就好。這裡盡量用原創的,實際中能碰到的例子來說明模式的特點和用處。介面卡模式的目的主要在於解決介面...