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只是方便你往這個模式上套,實際使用上可能并不是這樣)
- 1 回答
- 0 關(guān)注
- 696 瀏覽
添加回答
舉報