1 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
就按你的例子
一個普通會員在使用了某音樂客戶端一段時間后變成了窮逼會員,如果一段時間不續費的話又會重新跌會普通會員,不同會員在播放音樂的時候會自動使用不同音質的源。
那么按照一般的做法就是寫幾個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();
這種代碼嘛,如果放現在我來看其實也能湊合,但如果邏輯復雜了后你可能會看到數不清的大括號,然后任何一次需求變更你就會相當糾結。
如果硬要用狀態模式的話,這塊就比較容易了,可以直接將這些判斷拆到各自的派生類中,外邊只需要一個
music.PlayFor(account.State);(這里突出State只是方便你往這個模式上套,實際使用上可能并不是這樣)
- 1 回答
- 0 關注
- 711 瀏覽
添加回答
舉報
0/150
提交
取消