進(jìn)入正式講解前,我們先來分析一下兩種應(yīng)對(duì)如上業(yè)務(wù)需求的方式:
方式一:移動(dòng)端直接調(diào)用各個(gè)子系統(tǒng)的功能,和各個(gè)子系統(tǒng)之間形成緊耦合的關(guān)系,如下圖所示:
方式二:提供一個(gè)高層接口,該高層接口負(fù)責(zé)和子系統(tǒng)進(jìn)行交互,并向移動(dòng)端提供需要使用的接口,如下圖所示:
“為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口。外觀模式定義了一個(gè)更高層次的接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。”
最初的定義出現(xiàn)于《設(shè)計(jì)模式》(Addison-Wesley,1994)。
這個(gè)定義,通過上面引言的圖示講解,應(yīng)該很好理解了,這里再分析一下定義中的兩個(gè)重要角色:
外觀角色:就是引言圖示中的“高層接口”,客戶端可以調(diào)用這個(gè)角色的方法;另外,該角色知道相關(guān)的子系統(tǒng)的功能和責(zé)任。
下面列出應(yīng)用外觀模式實(shí)現(xiàn)旅行社報(bào)團(tuán)旅游的結(jié)構(gòu)圖:
從源碼可以看到,外觀類調(diào)用了交通工具類、旅館類、飯館類、景點(diǎn)類。下面看看客戶端調(diào)用代碼:
根據(jù)外觀模式的特點(diǎn),我們可以在以下情況中使用Facade模式:
聯(lián)系客服