外觀模式為複雜子系統提供統一高層介面,降低客戶端使用複雜度。本文以 Visual Studio 「Build」按鈕一鍵觸發語法分析、中間碼生成、組譯、連結等子系統協作為例,詳解模式結構、優缺點、適用場景與 C++ 實作。

#include <iostream>
using namespace std;
// 子系統
class CSyntaxParser {
public:
void SyntaxParser() { cout << "Syntax Parser" << endl; }
};
class CGenMidCode {
public:
void GenMidCode() { cout << "Generate middle code" << endl; }
};
class CGenAssemblyCode {
public:
void GenAssemblyCode() { cout << "Generate assembly code" << endl; }
};
class CLinkSystem {
public:
void LinkSystem() { cout << "Link System" << endl; }
};
// 外觀
class Facade {
public:
void Compile() {
CSyntaxParser().SyntaxParser();
CGenMidCode().GenMidCode();
CGenAssemblyCode().GenAssemblyCode();
CLinkSystem().LinkSystem();
}
};
// 客戶端
int main() {
Facade facade;
facade.Compile(); // 一鍵完成所有編譯步驟
}
外觀模式是「簡單介面包裝複雜實作」的經典實踐。良好的 Facade 設計能大幅降低系統認知負擔,是架構分層、模組解耦、遺留系統包裝的利器。