您的位置:首页 > 其它

[原创]State模式(状态模式)消除烦琐的if..else语句

2008-01-24 20:38 507 查看
[b] State模式的定义[/b]: 不同的状态,不同的行为;或者说,每个状态有着相应的行为.

[b] 何时使用[/b] :State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else
进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.

通常的模式下我们需要根据状态来来判断动作都是使用一连串的 if...else 语句,例如:

class MyPaper

public class MainClass

运行结果:

You need a black pen

白色的纸张需要黑色的笔,黑色的纸张需要白色的笔,蓝色的纸张需要红色的笔,红色的纸张需要蓝色的笔.....

由上面程序看来,只要有多少种纸就需要多少个 else if 如果以后存在别的颜色的纸就必须在枚举里面加类型同时继续的添加 else if 然后再重新编译,显然这样的代码对日后扩展非常不利.这样的问题我们可以用State模式得到解决.

class White implements PaperColor

class Black implements PaperColor

class Blue implements PaperColor

class Red implements PaperColor

class MyPaper

public class MainClass

You need a red pen

State模式不但使得程序容易扩展同时也消除了烦琐的if...else语句.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: