日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式 -- (7)外观模式

發布時間:2025/4/14 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式 -- (7)外观模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外觀模式

  外觀模式為子系統中的一組接口提供一個一致的界面, 外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

?

適用性

  1.為一個復雜子系統提供一個簡單接口。

  2.提高子系統的獨立性。

  3.在層次化結構中,可以使用Facade模式定義系統中每一層的入口。

?

代碼示例

  假設編譯一個程序需要經過四個步驟:詞法分析、語法分析、中間代碼生成、機器碼生成。學過編譯都知道,每一步都很復雜。對于編譯器這個系統,就可以使用外觀模式。可以定義一個高層接口,比如名為Compiler的類,里面有一個名為Run的函數。客戶只需調用這個函數就可以編譯程序,至于Run函數內部的具體操作,客戶無需知道。

#include <iostream> using namespace std;class Scanner { public: void Scan() { cout<<"詞法分析"<<endl; } }; class Parser { public: void Parse() { cout<<"語法分析"<<endl; } }; class GenMidCode { public: void GenCode() { cout<<"產生中間代碼"<<endl; } }; class GenMachineCode { public: void GenCode() { cout<<"產生機器碼"<<endl;} }; //高層接口 class Compiler { public: void Run() { Scanner scanner; Parser parser; GenMidCode genMidCode; GenMachineCode genMacCode; scanner.Scan(); parser.Parse(); genMidCode.GenCode(); genMacCode.GenCode(); } }; int main() { Compiler compiler; compiler.Run(); return 0; }

?

代碼示例2

  構造一個家庭影院,當啟動watchMovie方法時可以看電影,當使用endMovie時關閉電影。

#include <iostream> using namespace std;//組件類 class Amplifier { public:void on(){cout << "Amplifier on" << endl;}void off(){cout << "Amplifier off" << endl;} };class Tuner { public:void on(){cout << "Tuner on" << endl;}void off(){cout << "Tuner off" << endl;} };class DvdPlayer { public:void on(){cout << "DvdPlayer on" << endl;}void off(){cout << "DvdPlayer off" << endl;} };class Screen { public:void on(){cout << "Screen on" << endl;}void off(){cout << "Screen off" << endl;} };//家庭影院 class HomeTheaterFacade { public://統一接口void watchMovie(){amp.on();tuner.on();dvd.on();screen.on();}void endMovie(){amp.off();tuner.off();dvd.off();screen.off();}HomeTheaterFacade(Amplifier am,Tuner tune,DvdPlayer dv,Screen scree){amp = am;tuner = tune;dvd = dv;screen = scree;}//~HomeTheaterFacade(){} private:Amplifier amp;Tuner tuner;DvdPlayer dvd;Screen screen; };//客戶代碼 int main() {Amplifier amp;Tuner tuner;DvdPlayer dvd;Screen screen;HomeTheaterFacade homeTheaterFacade(amp,tuner,dvd,screen);;homeTheaterFacade.watchMovie();homeTheaterFacade.endMovie();return 0; }

結果:

Amplifier on Tuner on DvdPlayer on Screen on Amplifier off Tuner off DvdPlayer off Screen off

?

轉載于:https://www.cnblogs.com/jeakeven/p/4948090.html

總結

以上是生活随笔為你收集整理的设计模式 -- (7)外观模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。