设计模式-状态模式

最近在学设计模式,有些地方不懂请教下大家。比如状态模式,怎么在状态之间任意切换。像 普通 会员 超级会员 普通怎么能够跳跃切换。 还有一个疑问是 状态之间怎么取得或使用其他状态的数据。 


海绵宝宝撒
浏览 643回答 1
1回答

子衿沉夜

就按你的例子一个普通会员在使用了某音乐客户端一段时间后变成了穷逼会员,如果一段时间不续费的话又会重新跌会普通会员,不同会员在播放音乐的时候会自动使用不同音质的源。那么按照一般的做法就是写几个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只是方便你往这个模式上套,实际使用上可能并不是这样)
打开App,查看更多内容
随时随地看视频慕课网APP