最近在学设计模式,有些地方不懂请教下大家。比如状态模式,怎么在状态之间任意切换。像 普通 会员 超级会员 普通怎么能够跳跃切换。 还有一个疑问是 状态之间怎么取得或使用其他状态的数据。
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 关注
- 668 浏览
添加回答
举报
0/150
提交
取消