外觀模式(門面模式),是一種相對簡單而又無處不在的模式。外觀模式提供一個高層接口,這個接口使得客戶端或子系統更加方便調用。
用一段再簡單不過的代碼來表示:
復制代碼 代碼如下:
var getName = function(){
return ”svenzeng”
}
var getSex = function(){
return ‘man'
}
如果你需要分別調用getName和getSex函數. 那可以用一個更高層的接口getUserInfo來調用.
復制代碼 代碼如下:
var getUserInfo = function(){
var info = a() + b();
return info;
}
答案是顯而易見的,飯堂的炒菜師傅不會因為你預定了一份燒鴨和一份白菜就把這兩樣菜炒在一個鍋裡。他更願意給你提供一個燒鴨飯套餐。同樣在程序設計中,我們需要保證函數或者對象盡可能的處在一個合理粒度,畢竟不是每個人喜歡吃燒鴨的同時又剛好喜歡吃白菜。
外觀模式還有一個好處是可以對用戶隱藏真正的實現細節,用戶只關心最高層的接口。比如在燒鴨飯套餐的故事中,你並不關心師傅是先做燒鴨還是先炒白菜,你也不關心那只鴨子是在哪裡成長的。
最後寫個我們都用過的外觀模式例子:
復制代碼 代碼如下:
var stopEvent = function( e ){ //同時阻止事件默認行為和冒泡
e.stopPropagation();
e.preventDefault();
}