设计模式:外观模式(C++)【颜值很重要】
生活随笔
收集整理的這篇文章主要介紹了
设计模式:外观模式(C++)【颜值很重要】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
外觀模式介紹
外觀 外觀 從名字都可以看出來對 顏值很看重唄。21世紀都是刷臉的時代,當然顏值很重要。那么對于我們寫的代碼 也一樣,也需要好看的顏值,記得有本書叫 《代碼整潔之道》 說的就是相關的內(nèi)容。在我們的設計模式中呀,我們給用戶呈現(xiàn)的應該是一個簡單且統(tǒng)一的接口,我們不需要把接口實現(xiàn)的細節(jié)讓用戶知道,當然用戶也不想知道你是怎么實現(xiàn) 。這也就是我們設計模式中的最少知道原則,又被稱為 迪米特法則。那我們的外觀模式呢就是圍繞這個進行展開的。
外觀模式,為子系統(tǒng)中的一組接口提供一個一致的界面(對外提供),此模式定義了一個高層接口,這個接口使的這一子系統(tǒng)更加容易使用。下面看看外觀模式的標準模型圖。
外觀模式模型圖
外觀模式案例
我們就用一個智能家居系統(tǒng)舉例吧,智能家居系統(tǒng) 有KTV模式、觀影模式,這是對外也就是給客戶提供的。具體到KTV模式需要運行一些子系統(tǒng),比如說 什么 燈光系統(tǒng)、音響系統(tǒng)、麥克風系統(tǒng)呀 這些 統(tǒng)統(tǒng) 沒必要讓用戶知道和操作,我們的外觀類具體進行負責 對客戶對外就提供簡潔的界面,內(nèi)部自己實現(xiàn)那些子系統(tǒng)的調(diào)用。
智能家居代碼
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class LightSystem { public:void on(){cout << "開燈..." << endl;}void off(){cout << "關燈..." << endl;} }; class MovieSystem { public:void on(){cout << "放電影..." << endl;}void off(){cout << "關閉電影..." << endl;} }; class SounderSystem { public:void on(){cout << "打開音響..." << endl;}void off(){cout << "關閉音響..." << endl;} }; class MusicSystem { public:void on(){cout << "放音樂..." << endl;}void off(){cout << "關閉音樂..." << endl;} }; class MicrophoneSystem { public:void on(){cout << "麥克風打開..." << endl;}void off() {cout << "麥克風關閉..." << endl;} }; //智能生活,給用戶提供簡潔的界面 class HomeSystem { public://KTV模式...void OpenKTV(){//關燈light.off();//打開音響sounder.on();//音樂走起music.on();//打開麥克風microphone.on();cout << "*********KTV模式 歡迎您********" << endl;}void CloseKTV(){light.on();sounder.off();music.off();microphone.off();cout << "**********KTV模式 已經(jīng)關閉********" << endl;}//觀影模式...void OpenMovie(){//關燈light.off();//打開音響sounder.on();//放電影sounder.on();cout << "*********家庭影院模式 歡迎您********" << endl;}void CloseMovie(){light.on();sounder.off();sounder.off();cout << "*********家庭影院模式 已經(jīng)關閉********" << endl;} private:LightSystem light;MovieSystem movie;MusicSystem music;SounderSystem sounder;MicrophoneSystem microphone; };//客戶端 只需要和系統(tǒng)統(tǒng)一的接口進行 交互,沒有必要知道更多 -->迪米特法則(最少知道原則) //給用用戶提供 簡潔的接口 是外觀模式 最重要的一點 int main(int argc, char *argv[]) {HomeSystem home;home.OpenKTV();//開啟KTV模式home.CloseKTV();home.OpenMovie();//開啟電影模式home.CloseMovie();return EXIT_SUCCESS; }
代碼運行結果
總結
以上是生活随笔為你收集整理的设计模式:外观模式(C++)【颜值很重要】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 16. OD-破解序列号验证机算法
- 下一篇: Linux服务与chkconfig