欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

我所理解的設(shè)計(jì)模式(C++實(shí)現(xiàn))——外觀模式(F

系統(tǒng) 2807 0

概述

想想我們小時(shí)候玩的四驅(qū)車(chē),里面的構(gòu)造很復(fù)雜,馬達(dá),舵機(jī),電池組等等,而我們控制它卻非常簡(jiǎn)單,只要打開(kāi)電池開(kāi)關(guān),他就可以跑。我們其實(shí)不用知道它里面是如何工作,只要知道撥動(dòng)開(kāi)關(guān)它就可以工作就行了,這個(gè)開(kāi)關(guān)其實(shí)就四驅(qū)車(chē)給我們的一個(gè)友好的組件,使得我們可以很方便的控制它。

外觀模式其實(shí)定義了一個(gè)高層接口,該接口為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,使得這一子系統(tǒng)更加容易使用。

類(lèi)圖和樣例



在這個(gè)對(duì)象圖中,出現(xiàn)了兩個(gè)角色:

外觀( Facade ) 角色 :客戶端可以調(diào)用這個(gè)角色的方法。此角色知曉相關(guān)的 ( 一個(gè)或者多個(gè) ) 子系統(tǒng)的功能和責(zé)任。在正常情況下,本角色會(huì)將所有從客戶端發(fā)來(lái)的請(qǐng)求委派到相應(yīng)的子系統(tǒng)去。

子系統(tǒng) (subsystem) 角色 :可以同時(shí)有一個(gè)或者多個(gè)子系統(tǒng)。每一個(gè)子系統(tǒng)都不是一個(gè)單獨(dú)的類(lèi),而是一個(gè)類(lèi)的集合。每一個(gè)子系統(tǒng)都可以被客戶端直接調(diào)用,或者被外觀角色調(diào)用。子系統(tǒng)并不知道外觀的存在,對(duì)于子系統(tǒng)而言,外觀僅僅是另外一個(gè)客戶端而已。

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

//client
int main()  
{  
	Compiler compiler;  
	compiler.Run();  
	return 0;  
}  
  

要點(diǎn)

1 Facade 模式對(duì)客戶屏蔽了子系統(tǒng)組件,因而減少了客戶處理的對(duì)象的數(shù)目并使得子系統(tǒng)使用起來(lái)更加方便。

2 Facade 模式實(shí)現(xiàn)了子系統(tǒng)與客戶之間的松耦合關(guān)系,而子系統(tǒng)內(nèi)部的功能組件往往是緊耦合的。松耦合關(guān)系使得子系統(tǒng)的組件變化不會(huì)影響到它的客戶。

3 .如果應(yīng)用需要,它并不限制它們使用子系統(tǒng)類(lèi)。因此你可以在系統(tǒng)易用性與通用性之間選擇。

4.在外觀模式中,通常只需要一個(gè)外觀類(lèi),并且此外觀類(lèi)只有一個(gè)實(shí)例,換言之它是一個(gè)單例類(lèi)。當(dāng)然這并不意味著在整個(gè)系統(tǒng)里只能有一個(gè)外觀類(lèi),而僅僅是說(shuō)對(duì)每一個(gè)子系統(tǒng)只有一個(gè)外觀類(lèi)。或者說(shuō),如果一個(gè)系統(tǒng)有好幾個(gè)子系統(tǒng)的話,每一個(gè)子系統(tǒng)有一個(gè)外觀類(lèi),整個(gè)系統(tǒng)可以有數(shù)個(gè)外觀類(lèi)。

5. 外觀 模式的用意是為子系統(tǒng)提供一個(gè)集中化和簡(jiǎn)化的溝通管道,而不建議向子系統(tǒng)加入新的行為。

6.外觀模式注重的是簡(jiǎn)化接口,它更多的時(shí)候是從架構(gòu)的層次去看整個(gè)系統(tǒng),而并非單個(gè)類(lèi)的層次。

適用性和優(yōu)缺點(diǎn)

適用性

1 .為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口。

2 .提高子系統(tǒng)的獨(dú)立性。

3 .在層次化結(jié)構(gòu)中,可以使用 Facade 模式定義系統(tǒng)中每一層的入口。

優(yōu)點(diǎn)

1. 松散耦合
外觀模式松散了客戶端與子系統(tǒng)的耦合關(guān)系,讓子系統(tǒng)內(nèi)部的模塊能更容易擴(kuò)展和維護(hù)。即要點(diǎn)2.

2. 簡(jiǎn)單易用
外觀模式讓子系統(tǒng)更加易用,客戶端不再需要了解子系統(tǒng)內(nèi)部的實(shí)現(xiàn),也不需要跟眾多子系統(tǒng)內(nèi)部的模塊進(jìn)行交互,只需要跟外觀交互就可以了,相當(dāng)于外觀類(lèi)為外部客戶端使用子系統(tǒng)提供了一站式服務(wù)。

3. 更好的劃分訪問(wèn)層次
通過(guò)合理使用 Facade ,可以幫助我們更好的劃分訪問(wèn)的層次。有些方法是對(duì)系統(tǒng)外的,有些方法是系統(tǒng)內(nèi)部使用的。把需要暴露給外部的功能集中到外觀中,這樣既方便客戶端使用,也很好的隱藏了內(nèi)部的細(xì)節(jié)。

缺點(diǎn)

過(guò)多的或者是不太合理的 Facade 也容易讓人迷惑,到底是調(diào)用 Facade 好呢,還是直接調(diào)用模塊好。


LCL_data原創(chuàng)于CSDN.NET【 http://blog.csdn.net/lcl_data/article/details/8841779


我所理解的設(shè)計(jì)模式(C++實(shí)現(xiàn))——外觀模式(Facade Pattern)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 影音av| 日本成人在线看 | 99久久99久久精品免费看蜜桃 | 无码国产精品成人午夜视频 | 国产下药迷倒白嫩美女96 | 国产乱码精品1区2区3区 | 久久精品一区二区三区四区 | 97精品久久 | 色综合天天综合网看在线影院 | 青娱乐伊人 | 久青草免费在线视频 | 日韩一二 | 国产精品久久久久久久四虎电影 | 毛片免费在线 | 一a一级片| 天天操一操 | 九九操视频 | 天天射天天做 | 久久久久毛片成人精品 | 最新国产视频 | 做羞羞视频 | www操操| 成人影院av | 国产精品久久精品 | 性欧美18一19sex性高清播放 | 超碰日韩 | 日韩午夜在线视频 | 亚洲综合五月天激动情网 | 激情六月丁香婷婷 | 小明看看在线视频 | 亚洲国产成人九九综合 | 精品国产91乱码一区二区三区 | 亚洲欧美日韩激情在线观看 | 日本亚洲一区 | 激情六月色 | 免费观看性欧美一级 | 成在线人免费视频 | 亚洲一区二区久久 | 成人国产网站 | 亚洲欧美在线观看 | 美女91视频 |