js設(shè)計(jì)模式(結(jié)構(gòu)型設(shè)計(jì)模式)-外觀模式

? 外觀模式:為一組復(fù)雜的子系統(tǒng)提供一個(gè)更高級(jí)的統(tǒng)一接口,通過(guò)這個(gè)接口可以對(duì)子系統(tǒng)訪問(wèn)很輕松。就像我們點(diǎn)的套餐一樣,下面詳細(xì)說(shuō)明。

1.場(chǎng)景:添加點(diǎn)擊事件

為頁(yè)面document添加onclick事件,

重新添加了,會(huì)覆蓋。而且存在阻止默認(rèn)事件的兼容問(wèn)題。

document.body.onclick=function(e){

e.preventDefault();

console.log(1)

}

2.外觀模式來(lái)處理

每天中午,我們急沖沖得去餐廳吃飯,人很多,無(wú)論是商家還是我們都希望能快點(diǎn)填飽肚子。通常我們都是點(diǎn)套餐,而不點(diǎn)單品,一則省錢,二則省心。套餐簡(jiǎn)潔明了,他把主食、菜品、飲料都定制好了。外觀模式就是如此,他提供一個(gè)統(tǒng)一對(duì)外接口,這樣就能很簡(jiǎn)單的實(shí)現(xiàn)功能而不用管內(nèi)部的復(fù)雜多樣。代碼如下

addEvent方法實(shí)現(xiàn)

var bc = {

? ? ? ? addHandler: function(oElement, sEvent, fnHandler) {

? ? ? ? ? ? oElement.addEventListener ?

? ? ? ? ? ? ? ? oElement.addEventListener(sEvent, fnHandler, false) :

? ? ? ? ? ? ? ? oElement.attachEvent("on" + sEvent, fnHandler)

? ? ? ? }

? ? }

原生js有很多兼容代碼,我們可以利用外觀模式封裝一個(gè)小型的代碼庫(kù)。(可以用單例模式)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,131評(píng)論 2 17
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,701評(píng)論 1 11
  • 聲明:本文來(lái)源于http://www.webzsky.com/?p=731我只是在這里作為自己的學(xué)習(xí)筆記整理一下(...
    angryyan閱讀 7,247評(píng)論 1 6
  • 上了滿月島大概一個(gè)多星期,近一兩日,我心里真的憋了一把熊熊燃燒的烈火。點(diǎn)燃火種不是別人,恰恰是逼著自己熬夜的上司。...
    修墨68閱讀 501評(píng)論 0 1
  • “我剛剛開車,開著開著眼淚就滑出來(lái)了”。 “我們徹底結(jié)束了。這次是真的,彼此都沒(méi)有挽留”。 “不用等三天,我已經(jīng)清...
    夏奈l閱讀 368評(píng)論 7 3

友情鏈接更多精彩內(nèi)容