[原创]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语句.
[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语句.
相关文章推荐
- State模式(状态模式)消除烦琐的if..else语句
- State模式(状态模式)消除烦琐的if..else语句
- 用State模式减少if..elseif语句
- 大量if else 或者switch case可以采用的设计模式-----状态模式
- 用状态机模式消除复杂的 if else 逻辑
- Java中利用设计模式来代替复杂的if...else...语句(三层以上的嵌套循环)
- 用状态机模式消除复杂的 if else 逻辑
- 状态模式——省去if-else的繁琐结构
- java开发C语言编译器:消除冗余语句和把ifelse控制语句编译成字节码
- 使用Command与Factory模式消除业务代码中的if,else语句
- 状态模式、职责链模式——省去if-else的繁琐结构
- 使用状态模式(state pattern)替代if else
- 架构 之 使用子类多态 and 使用state模式(使用面向对象技术替代switch-case和if-else)
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 设计模式之状态模式(State)
- 【Javascript】javascript学习 八 JavaScript If...Else 语句
- 级联If -else if -else 语句
- 设计模式-状态模式(State)
- 深入浅出学习Struts1框架(三):彻底去掉TestServlet中的字符串和if-else语句块
- 策略模式:代替if-else-if