国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
設(shè)計(jì)模式之Facade--外觀模式

設(shè)計(jì)模式之Facade - 外觀模式

LifevV.COM編輯部

Facade模式也叫外觀模式,是由GoF提出的23種設(shè)計(jì)模式中的一種。Facade模式為一組具有類似功能的類群,比如類庫,子系統(tǒng)等等,提供一個(gè)一致的簡(jiǎn)單的界面。這個(gè)一致的簡(jiǎn)單的界面被稱作facade。


本文介紹設(shè)計(jì)模式中的外觀(Facade)模式的概念,用法,以及實(shí)際應(yīng)用中怎么樣使用Facade模式進(jìn)行開發(fā)。
Facade模式的概念
Facade模式為一組具有類似功能的類群,比如類庫,子系統(tǒng)等等,提供一個(gè)一致的簡(jiǎn)單的界面。這個(gè)一致的簡(jiǎn)單的界面被稱作facade。

在應(yīng)用系統(tǒng)中,為了實(shí)現(xiàn)某具有復(fù)雜功能的模塊或子系統(tǒng)等時(shí),往往需要為其設(shè)計(jì)和實(shí)現(xiàn)很多很小的類,也就是說,該模塊或子系統(tǒng)是由一組具有類似功能的類群組合而成。這樣一來,怎么調(diào)用這些類就成了問題。Facade就是這樣一種模式,設(shè)計(jì)一個(gè)被稱為facade的類,該類提供一個(gè)簡(jiǎn)單的調(diào)用接口:
- 隱藏具體的實(shí)現(xiàn)細(xì)節(jié),簡(jiǎn)化調(diào)用關(guān)系。
- 使得調(diào)用方的代碼更加簡(jiǎn)潔明了。
- 通過facade,降低外部調(diào)用類與內(nèi)部被調(diào)用類間的耦合程度。
- 可以為每個(gè)不同的任務(wù)需要,準(zhǔn)備經(jīng)過良好設(shè)計(jì)的簡(jiǎn)易的API。

Facade模式可以用下面的類圖來表示:

[出自:維基百科wikipedia.org]


Facade
    為調(diào)用方定義簡(jiǎn)單的調(diào)用接口。
Clients
    調(diào)用者。通過Facade接口調(diào)用提供某功能的內(nèi)部類群。
Packages
    功能提供者。指提供功能的類群(模塊或子系統(tǒng))。

Facade模式與Adapter模式的區(qū)別
Facade模式與Adapter模式存在著相當(dāng)?shù)南嗨浦帲簽榧创娴念愄峁┙缑娼y(tǒng)一的接口,以供外部類調(diào)用。
但Facade模式的目的是簡(jiǎn)化調(diào)用關(guān)系;Adapter模式是為不同的模塊/子系統(tǒng)提供一個(gè)統(tǒng)一的接口(支持多態(tài)),旨在將一個(gè)或多個(gè)已經(jīng)存在的不統(tǒng)一的接口轉(zhuǎn)化成為另一個(gè)統(tǒng)一的接口。
舉例說明:
1,Adapter模式:
有銀行A系統(tǒng),銀行B系統(tǒng),它們具有大致一樣的功能,但它們的對(duì)外接口各不一樣。
如果需要在C系統(tǒng)中使用A系統(tǒng)或B系統(tǒng),為了接口的一致,我們需要在C系統(tǒng)中實(shí)現(xiàn)一個(gè)Adapter,通過這個(gè)Adapter提供的接口,我們就可以透明的調(diào)用銀行A系統(tǒng)的功能、或者銀行B系統(tǒng)的功能了;
2,F(xiàn)acade模式:
有銀行A系統(tǒng),它具有非常復(fù)雜的功能,有融資,貸款,存款,取款,信用審查,擔(dān)保等等功能,
如果需要在C系統(tǒng)中,只需用到A系統(tǒng)的一部分功能,比如融資,我們就可以為需要用到的融資功能封裝一個(gè)Facade,通過這個(gè)facade,我們不用管A系統(tǒng)的內(nèi)部是怎么實(shí)現(xiàn)融資業(yè)務(wù)的,也不用管信用審查是否通過,是否具有充分的擔(dān)保資源等等,大大簡(jiǎn)化了客戶端的調(diào)用。


Facade模式的模型:

A系統(tǒng)有A1, A2, A3等類??蛻舳诵枰{(diào)用A系統(tǒng)的的A1.doSomething1();A2.doSomething2();A3.doSomething3()來完成某功能。
Facade模式的實(shí)現(xiàn)模型就是:

A系統(tǒng):

class A1 {
    public void doSomething1();
}

class A2 {
    public void doSomething2();
}

class A3 {
    public void doSomething3();
}

Facade:
public class Facade {
    public void doSomething() {
        A1 a1 = new A1();
        A1 a2 = new A2();
        A1 a3 = new A3();

        a1.doSomething1();
        a2.doSomething2();
        a3.doSomething3();
    }
}


Test:
public class Client {
    public static void main(String []args) {
        Facade facade = new Facade();
        facade.doSomething();
    }
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入理解JavaScript系列(30):設(shè)計(jì)模式之外觀模式
Java設(shè)計(jì)模式-外觀(門面)模式
設(shè)計(jì)模式學(xué)習(xí)筆記(十一)——Facade外觀模式
C#面向?qū)ο笤O(shè)計(jì)模式縱橫談:Facade 外觀模式
Java 設(shè)計(jì)模式——外觀模式
GoF設(shè)計(jì)模式之十 Facade- -
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服