隨遇而安——狀態(tài)模式

狀態(tài)模式介紹

? ? 狀態(tài)模式和策略模式結(jié)構(gòu)幾乎一樣尝蠕,但它們的目的烘豌、本質(zhì)卻完全不一樣。

????狀態(tài)模式的行為是平行的看彼、不可替換的廊佩;

? ? 策略模式的行為是彼此獨(dú)立的、可相互替換的靖榕。

? ? 狀態(tài)模式的意圖是讓一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候标锄,其行為也隨之改變。

狀態(tài)模式定義

? ? 當(dāng)一個(gè)對(duì)象內(nèi)部狀態(tài)改變時(shí)允許改變其行為茁计,這個(gè)對(duì)象看起來(lái)像是改變了其類料皇。

狀態(tài)模式使用場(chǎng)景

? ? 1)一個(gè)對(duì)象的行為取決于它的狀態(tài),并且它必須在運(yùn)行時(shí)根據(jù)狀態(tài)改變他的行為

? ? 2)代碼中包含大量與對(duì)象狀態(tài)有關(guān)的條件語(yǔ)句星压,例如践剂,一個(gè)操作中含有龐大的多分支語(yǔ)句(if-else或switch-case),并且這些分支依賴于改對(duì)象的狀態(tài)娜膘。

? ? 狀態(tài)模式將每一個(gè)條件分支放入一個(gè)獨(dú)立的類中逊脯,這使得你可以根據(jù)對(duì)象自身的情況將對(duì)象的狀態(tài)作為一個(gè)對(duì)象,這一對(duì)象可以不依賴與其他對(duì)象而獨(dú)立變化竣贪,這樣通過(guò)多態(tài)來(lái)去除過(guò)多的军洼、重復(fù)的if-else等分支語(yǔ)句。

狀態(tài)模式具體應(yīng)用

? ? 1)簡(jiǎn)單示例:電視的遙控器開(kāi)關(guān)機(jī)的狀態(tài)贾富,開(kāi)機(jī)狀態(tài)所有按鍵生效歉眷,關(guān)機(jī)狀態(tài)只有電源按鈕生效。這是在開(kāi)發(fā)電視盒子的時(shí)候可以用到颤枪。

? ? 2)Android原生應(yīng)用的wifi模塊也是使用狀態(tài)模式的汗捡,具體的就不介紹了,源碼內(nèi)容太多畏纲,感興趣的可以自己看下扇住。

? ? 3)在實(shí)際移動(dòng)開(kāi)發(fā)的登錄模塊,一般論壇類型的盗胀,例如新浪微博中艘蹋,用戶在未登錄的情況下點(diǎn)擊轉(zhuǎn)發(fā)按鈕,此時(shí)會(huì)讓用戶登錄票灰,然后再執(zhí)行轉(zhuǎn)發(fā)操作女阀。如果是已登錄的情況下宅荤,那么用戶輸入轉(zhuǎn)發(fā)的內(nèi)容后就可以直接進(jìn)行操作。

狀態(tài)模式小結(jié)

? ? 狀態(tài)模式的關(guān)鍵點(diǎn)在于不同的狀態(tài)下對(duì)于同一行為有不同的響應(yīng)浸策,這其實(shí)就是一個(gè)將if-else用多態(tài)來(lái)實(shí)現(xiàn)的一個(gè)具體實(shí)力冯键。它的實(shí)現(xiàn)原理就是將請(qǐng)求的處理封裝到狀態(tài)中,在不同的狀態(tài)類中對(duì)同一個(gè)請(qǐng)求進(jìn)行不同的處理庸汗。

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

? ? State模式將所有與一個(gè)特定的狀態(tài)相關(guān)的行為放入一個(gè)狀態(tài)對(duì)象中惫确,它提供了一個(gè)更好的方法來(lái)組織與特定狀態(tài)相關(guān)的代碼,將煩瑣的狀態(tài)判斷轉(zhuǎn)成結(jié)構(gòu)清晰的狀態(tài)類族蚯舱,在避免代碼膨脹的同時(shí)也保證了可擴(kuò)展性與可維護(hù)性改化。

缺點(diǎn):

? ? 狀態(tài)模式和其他幾個(gè)模式的共有缺點(diǎn)----隨著使用必然會(huì)增加系統(tǒng)類和對(duì)象的個(gè)數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市枉昏,隨后出現(xiàn)的幾起案子陈肛,更是在濱河造成了極大的恐慌,老刑警劉巖凶掰,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燥爷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡懦窘,警方通過(guò)查閱死者的電腦和手機(jī)前翎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)畅涂,“玉大人港华,你說(shuō)我怎么就攤上這事∥缢ィ” “怎么了立宜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)臊岸。 經(jīng)常有香客問(wèn)我橙数,道長(zhǎng),這世上最難降的妖魔是什么帅戒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任灯帮,我火速辦了婚禮,結(jié)果婚禮上逻住,老公的妹妹穿的比我還像新娘钟哥。我一直安慰自己,他們只是感情好瞎访,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布腻贰。 她就那樣靜靜地躺著,像睡著了一般扒秸。 火紅的嫁衣襯著肌膚如雪播演。 梳的紋絲不亂的頭發(fā)上冀瓦,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音写烤,去河邊找鬼咕幻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顶霞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锣吼,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼选浑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了玄叠?” 一聲冷哼從身側(cè)響起古徒,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎读恃,沒(méi)想到半個(gè)月后隧膘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寺惫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年疹吃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西雀。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萨驶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艇肴,到底是詐尸還是另有隱情腔呜,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布再悼,位于F島的核電站核畴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冲九。R本人自食惡果不足惜谤草,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娘侍。 院中可真熱鬧咖刃,春花似錦、人聲如沸憾筏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)氧腰。三九已至枫浙,卻和暖如春刨肃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箩帚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工真友, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紧帕。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓盔然,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親是嗜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愈案,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法鹅搪,內(nèi)部類的語(yǔ)法站绪,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法丽柿,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • 一恢准、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚(yú)_t_閱讀 4,160評(píng)論 1 44
  • 2017年6月4日 星期日 天氣晴 昨天白天可能睡多了,晚上睡不著了甫题,起來(lái)看《人民的名義》快到凌晨了馁筐。不行,快去睡...
    晨林夕閱讀 162評(píng)論 0 0
  • 二坠非、浮動(dòng)模型 塊狀元素這么霸道都是獨(dú)占一行眯漩,如果現(xiàn)在我們想讓兩個(gè)塊狀元素并排顯示,怎么辦呢麻顶?不要著急赦抖,設(shè)置元素浮動(dòng)...
    博為峰51Code教研組閱讀 292評(píng)論 0 0
  • 作者:依依靈 我這個(gè)人,平時(shí)不茍言笑辅肾,知心朋友很少队萤,所以我喜歡與小動(dòng)物交朋友。現(xiàn)在矫钓,我向你們介紹一下我和一只流浪狗...
    蒲陽(yáng)凡媽閱讀 475評(píng)論 3 20