第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設(shè)計模式-狀態(tài)模式

設(shè)計模式-狀態(tài)模式

海綿寶寶撒 2018-08-13 07:10:49
最近在學(xué)設(shè)計模式,有些地方不懂請教下大家。比如狀態(tài)模式,怎么在狀態(tài)之間任意切換。像 普通 會員 超級會員 普通怎么能夠跳躍切換。 還有一個疑問是 狀態(tài)之間怎么取得或使用其他狀態(tài)的數(shù)據(jù)。 
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

就按你的例子

一個普通會員在使用了某音樂客戶端一段時間后變成了窮逼會員,如果一段時間不續(xù)費的話又會重新跌會普通會員,不同會員在播放音樂的時候會自動使用不同音質(zhì)的源。

那么按照一般的做法就是寫幾個if else搞定

if(account.State=Normal)

{

  if(account.PlayTimes>10){

    account.ChangeTo窮逼();

      music.PlayHighQuality();

  }

  else

    music.PlayLowQuality();

}

else if(account.State=窮逼)

{

  if(account.PlayTimes>100){

    music.PlayLowQuality();

    account.ChangeToNormal();

  }else

  music.PlayHighQuality();

}

else

  music.PlayHighQuality();

這種代碼嘛,如果放現(xiàn)在我來看其實也能湊合,但如果邏輯復(fù)雜了后你可能會看到數(shù)不清的大括號,然后任何一次需求變更你就會相當(dāng)糾結(jié)。

如果硬要用狀態(tài)模式的話,這塊就比較容易了,可以直接將這些判斷拆到各自的派生類中,外邊只需要一個

music.PlayFor(account.State);(這里突出State只是方便你往這個模式上套,實際使用上可能并不是這樣)


查看完整回答
反對 回復(fù) 2018-08-19
  • 1 回答
  • 0 關(guān)注
  • 696 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號