消息中間件--MQ
解耦
一、外觀模式
外觀模式提供了一個(gè)統(tǒng)一的接口坎背,用來訪問子系統(tǒng)中的一群接口替劈。外觀模式定義了一個(gè)高層接口,讓子系統(tǒng)更容易被使用得滤。
二陨献、UML圖
三、例子
舉個(gè)編譯器的例子懂更,假設(shè)編譯一個(gè)程序需要經(jīng)過四個(gè)步驟:詞法分析眨业、語法分析、中間代碼生成沮协、機(jī)器碼生成坛猪。學(xué)過編譯都知道,每一步都很復(fù)雜皂股。對(duì)于編譯器這個(gè)系統(tǒng)墅茉,就可以使用外觀模式∥啬牛可以定義一個(gè)高層接口就斤,比如名為Compiler的類,里面有一個(gè)名為Run的函數(shù)蘑辑⊙蠡客戶只需調(diào)用這個(gè)函數(shù)就可以編譯程序,至于Run函數(shù)內(nèi)部的具體操作洋魂,客戶無需知道绷旗。
class Scanner
{
public:
void Scan() { cout<<"詞法分析"<<endl; }
};
class Parser
{
public:
void Parse() { cout<<"語法分析"<<endl; }
};
class GenMidCode
{
public:
void GenCode() { cout<<"產(chǎn)生中間代碼"<<endl; }
};
class GenMachineCode
{
public:
void GenCode() { cout<<"產(chǎn)生機(jī)器碼"<<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;
}