日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

實際開發(fā)過程中,一個系統(tǒng)會出現(xiàn)一個服務可能有N多個地方會需要使用,這個時候我們就會需要去將服務封裝成一個公共的Class,但是倘若封裝的不夠完美,那么這個服務Class也將成為系統(tǒng)的雞肋。下面我說的封裝的思路,對于前段和后端開發(fā)都適合。

封裝的原則

1、能夠解決95%~99%的系統(tǒng)場景(也就是除了解決現(xiàn)在的問題,還能夠支持將來可能出現(xiàn)的問題)

2、體現(xiàn)自己的核心處理能力(核心能力基本上不會去改變)

3、當服務改變或者升級時,對于老的調用方無感知,能夠做到無需調整

封裝的核心

代碼封裝技巧和原則

 

舉個生活中的栗子

生活中存在很多電器設備,每個電器設備都需要使用電,而且每個電器都會有插頭,通過插頭插入插線板,那么機器就可以運轉。下面做個名詞的對應:

調用方:電熨斗(三眼插頭)、電視機(兩眼插頭)

服務方:供電設備

核心能力:供電

Handler:家里的插座

電熨斗和電視機需要運轉,就需要用到電器設備,而電器設備里面的Handler就是插座,電器設備的核心能力就是供電。由于調用方出現(xiàn)了不同的插頭類型,所以插座的出現(xiàn)就是為了解決兼容的問題。插座的主要作用就是自身設計了兩種傳參——兩眼插孔和三眼插孔,不同的設備接入對應的插孔,這樣就可以享受到供電的服務。

問題1:如果出現(xiàn)四眼插頭的設備怎么辦?

回答:我們要做的其實就是新增一個對于四眼插頭的支持,也就是對應的新增一個四眼插孔,這樣對于老設備來說無需任何調整,仍然可以毫無影響的在原來的插座上享受供電服務。

問題2:如果出現(xiàn)供電升級怎么辦?

回答:供電設備內部硬件升級,做到對于老設備的0影響。比如電壓由220V變成了280V,如果供電設備不做調整,那么對于老的設備來說可能直接會被高電壓燒毀。但是如果你要去設備自身調整成適配280V電壓,那么無疑是一個巨大的工作量。

舉個前端開發(fā)中的栗子

調用方:A頁面,數(shù)據(jù)包結構A;B頁面,數(shù)據(jù)包結構B

服務方:級聯(lián)插件

核心能力:級聯(lián)

Handler:數(shù)據(jù)包處理

var _Plugin = {

open: function(args) {

//實現(xiàn)級聯(lián)功能

}

}

由于A頁面和B頁面都使用到了級聯(lián)插件,但是各自傳參數(shù)據(jù)包都不一樣。所以我們在封裝插件時,就需要考慮將差異化做到插件內部去處理。針對單個業(yè)務場景來說,既然要做到區(qū)分,我們就需要利用一個字段來處理,常用的手段是定義一個type傳參,值類型為數(shù)字,不同的數(shù)字代表不同的數(shù)據(jù)包;其次定義傳入的數(shù)據(jù)包的key,一般來說為了方便識別,key的命名就定義為data。所以上面的open方法的傳參設計例如:

var args = {

type: 1, //區(qū)分業(yè)務場景

data: {}, //傳入的數(shù)據(jù)

}

問題1:如果出現(xiàn)C頁面,傳入C數(shù)據(jù)包怎么辦?

回答:type值多加一個用于區(qū)分C頁面的調用。

問題2:級聯(lián)插件更改怎么辦?

回答:根據(jù)新的插件要求,內部做處理。比如原來的插件需要dt_1這樣的數(shù)據(jù)結構,但是新的插件需要dt_2這樣的數(shù)據(jù)結構,那么就在內部將原來的A、B.....處理成dt_2數(shù)據(jù)包結構

問題3:A、B數(shù)據(jù)包可以直接利用,但是C數(shù)據(jù)包不行,怎么辦?

回答:內部將C處理成需要的數(shù)據(jù)結構

問題4:已經(jīng)有N個頁面調用了open方法,但是為了滿足更多業(yè)務場景,需要對open的傳參做調整,怎么辦?

回答:利用方法重載的思路進行內部方法的改造,比如創(chuàng)建一個新方法open_new,它的傳參是按照新的要求設計的,那么對于老的頁面都在調用open方法,我們就必須將open的內部實現(xiàn)做調整,比如:

var _Plugin = {

open: function(args) {

//對args做處理,生成新的傳參argsNew

 

args --> argsNew

 

open_new(argsNew);

},

open_new: function(argsNew) {

//實現(xiàn)級聯(lián)功能

}

}

分享到:
標簽:封裝 代碼
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定