您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Facade外觀模式怎么實現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Facade外觀模式怎么實現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
Facade(外觀模式)
Facade(外觀模式)屬于結(jié)構(gòu)型模式,是一種日常開發(fā)中經(jīng)常被使用到的設(shè)計模式。
意圖:為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn)acade 模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
舉例子
如果看不懂上面的意圖介紹,沒有關(guān)系,設(shè)計模式需要在日常工作里用起來,結(jié)合例子可以加深你的理解,下面我準(zhǔn)備了三個例子,讓你體會什么場景下會用到這種設(shè)計模式。
意圖解釋
圖書管理員
圖書館是一個非常復(fù)雜的系統(tǒng),雖然圖書按照一定規(guī)則擺放,但也只有內(nèi)部人員比較清楚,作為一位初次來的訪客,想要快速找到一本書,最好的辦法是直接問圖書管理員,而不是先了解這個圖書館的設(shè)計,因為你可能要來回在各個樓宇間奔走,借書的流程可能也比較長。
圖書管理員就起到了簡化圖書館子系統(tǒng)復(fù)雜度的作用,我們只要凡事詢問圖書管理員即可,而不需要關(guān)心他是如何與圖書館內(nèi)部系統(tǒng)打交道的。
最多跑一次便民服務(wù)
浙江省推出的最多跑一次服務(wù)非常方便,很多辦事流程都簡化了,無論是證件辦理還是業(yè)務(wù)受理,幾乎只要跑一次,而必須要持續(xù)幾天的流程也會通過手機(jī)短信或者 App 操作完成后續(xù)流程。
這就相當(dāng)于外觀模式,因為政府系統(tǒng)內(nèi)部的辦事流程可能沒有太大變化,但通過抽象出 Facade(外觀),讓普通市民可以直接與便民辦事處連接,而不需要在車管所與駕校之間來回奔波,背后的事情沒有少,只是便民辦事處幫你做了。
Iphone 快捷指令功能
手機(jī)的 App 非常多,而我們需要了解每個功能在哪個 App 上才能運(yùn)用自如,而快捷指令功能可以將 App 的某些功能單獨(dú)提取出來,形成一套新的功能組,我們可以只接觸到 “拍照” “付款” “計算”,而不用管背后是調(diào)用了支付寶還是微信、系統(tǒng)內(nèi)置攝像機(jī)還是其他攝像 App,也不用關(guān)心這個 App 內(nèi)部功能的入口在哪里,這些對接都在快接指令中自動完成。
快捷指令也是一種外觀模式。
意圖解釋
意圖:為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn)acade 模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
為降低一個擁有多個接口的子系統(tǒng)內(nèi)部復(fù)雜性,我們需要一個外觀來屏蔽內(nèi)部的復(fù)雜性,因此外觀模式就是定義一個高層接口,這個接口直連子系統(tǒng)的內(nèi)部實現(xiàn),但調(diào)用這個高層接口的人不需要關(guān)心子系統(tǒng)內(nèi)部的實現(xiàn),這樣,對于不想了解子系統(tǒng)內(nèi)部實現(xiàn)的人來說,提高了易用度。
當(dāng)然如果想要深度定制,就可以繞過外觀模式,直接使用子系統(tǒng)提供的類,所以說并不是有了外觀模式就必須通過外觀調(diào)用,而是根據(jù)實際需要判斷使用哪種調(diào)用方式。
結(jié)構(gòu)圖
可以看到,F(xiàn)acade 直接指向子系統(tǒng)中的類,而子系統(tǒng)的類不會反向指向 Facade。
代碼例子
下面例子使用 typescript 編寫。
// 假設(shè)一個子系統(tǒng)是三個類結(jié)合使用的,為了抽象而解耦開了
class A {
constructor(b: B) {
this.b = b
}
}
class B {
constructor(c: C) {
this.c = c
}
}
class C {
}
// 它們組合成了一種常用功能,我們可以使用外觀模式屏蔽子類的細(xì)節(jié)直接使用
class Compile {
public run() {
const parser = new A(new B(new C))
parser.run()
}
}
const compile = new Compile()
compile.run()
這樣我們只要知道 Compile 類就可以了,而不需要了解背后的 A B C 以及其組合關(guān)系。
弊端
外觀模式并不適合于所有場景,當(dāng)子系統(tǒng)足夠易用時,再使用外觀模式就是畫蛇添足。
另外,當(dāng)系統(tǒng)難以抽象出通用功能時,外觀模式的設(shè)計可能也無所適從,因為設(shè)計的高層接口可能適用范圍很窄,此時外觀模式的意義就比較小。
讀到這里,這篇“Facade外觀模式怎么實現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。