C++設(shè)計(jì)模式之外觀模式(Facade)
外觀模式應(yīng)該是程序員最下意識(shí)用的一種模式,比如我們習(xí)慣性的對(duì)復(fù)雜系統(tǒng)做一個(gè)封裝接口。外觀模式其本質(zhì)是對(duì)一堆復(fù)雜對(duì)象和應(yīng)用的接口抽象,對(duì)它們進(jìn)行封裝隔離,對(duì)于調(diào)用者來說只需要關(guān)系接口的實(shí)現(xiàn),而不需要知道內(nèi)部有哪些對(duì)象和調(diào)用。
作用
為模塊的一組接口提供一致的界面,定義了一個(gè)高層接口,這個(gè)接口使得這一模塊更加容易使用。
類視圖
實(shí)現(xiàn)
//復(fù)雜或多對(duì)象 class objectOne { public void operator() { cout<<"operator one\n"; } } class objectTwo { public void operator() { cout<<"operator two\n"; } } class objectThree { public void operator() { cout<<"operator three\n"; } } class objectFour { public void operator() { cout<<"operator four\n"; } } //外觀實(shí)現(xiàn) class Facade { objectOne one; objectTwo two; objectThree three; objectFour four; public Facade() { obj1 = new objectOne(); obj2 = new objectTwo(); obj3 = new objectThree(); obj4 = new objectFour(); } public void MethodA() { cout<<" Fun A()-----\n"); obj1.operator(); obj2.operator(); obj3.operator(); obj4.operator(); } public void MethodB() { cout<<" Fun B()-----\n"); obj4.operator(); obj3.operator(); obj2.operator(); obj1.operator(); } } //調(diào)用 void main() { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); }
應(yīng)用場(chǎng)景
- 構(gòu)建上下層次的模塊時(shí),如果上下進(jìn)行調(diào)用,則會(huì)出現(xiàn)強(qiáng)耦合,用外觀模式實(shí)現(xiàn)上下級(jí)模塊的接口,簡(jiǎn)化相互調(diào)用的交叉,降低上下層的耦合度;
- 在多個(gè)復(fù)雜模塊相互協(xié)作工作時(shí),向上用外觀類提煉出高層接口,對(duì)外隱藏其內(nèi)部的實(shí)現(xiàn)并隔離變化;
- 對(duì)單獨(dú)模塊或者對(duì)復(fù)雜模塊的封裝,提煉出外觀類進(jìn)行封裝訪問,解耦合。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++設(shè)計(jì)模式之策略模式(Strategy)
- C++設(shè)計(jì)模式之模板方法模式(TemplateMethod)
- C++設(shè)計(jì)模式之觀察者模式(Observer)
- C++設(shè)計(jì)模式之迭代器模式(Iterator)
- C++設(shè)計(jì)模式之適配器模式(Adapter)
- C++設(shè)計(jì)模式之建造者模式(Builder)
- C++設(shè)計(jì)模式之裝飾模式(Decorator)
- C++設(shè)計(jì)模式之代理模式(Proxy)
- C++和java設(shè)計(jì)模式之單例模式
- C++設(shè)計(jì)模式之享元模式(Flyweight)
相關(guān)文章
簡(jiǎn)單聊聊C++中回調(diào)函數(shù)的實(shí)現(xiàn)
回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù),如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù),下面這篇文章主要給大家介紹了關(guān)于C++中回調(diào)函數(shù)實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-01-01Qt QCompleter自動(dòng)補(bǔ)全的實(shí)現(xiàn)
本文主要介紹了Qt QCompleter自動(dòng)補(bǔ)全的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04淺談C++中thread庫(kù)join和detach的區(qū)別
這篇文章主要為大家介紹了C++中thread庫(kù)join和detach的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)鏈表的示例代碼
本文主要介紹了C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05在vscode中快速新建html文件的2種方法總結(jié)
這篇文章主要給大家介紹了關(guān)于在vscode中快速新建html文件的2種方法,以及如何快速打開HTML文件查看編輯效果的方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04C/C++表格組件Qt?TableWidget應(yīng)用詳解
本文詳細(xì)講解了C/C++中使用列表框組件Qt?TableWidget的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12C語(yǔ)言中scanf與scanf_s函數(shù)的使用詳解
本文主要介紹了C語(yǔ)言中scanf與scanf_s函數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10