筹划情势之State[Java编程]
本文“筹划情势之State[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
State的定义: 差别的状况,差别的行为;大概说,每个状况有着呼应的行为.
什么时刻利用?
State情势在实际利用中对比多,合适"状况的切换".因为我们常常会利用If elseif else 举行状况切换,假如针对状况的这样判断切换反复呈现,我们就要联想到能否可以采纳State情势了.
不只是按照状况,也有按照属性.假如某个对象的属性差别,对象的行为就不一样,这点在数据库系统中呈现频率对比高,我们常常会在一个数据表的尾部,加上property属性含义的字段,用以标识记录中一些特别性质的记录,这种属性的改变(切换)又是随时大概发生的,就有大概要利用State.
能否利用?
在实际利用,近似开关一样的状况切换是很多的,但有时并非那么明显,取决于你的经验和对系统的理解深度.
这里要阐述的是"开关切换状况" 和" 普通的状况判断"是有一些辨别的, " 普通的状况判断"也是有 if..elseif构造,比方:
if (which==1) state="hello";
else if (which==2) state="hi";
else if (which==3) state="bye";
这是一个 " 普通的状况判断",state值的差别是按照which变量来决意的,which和state没有关系.假如改成:
if (state.euqals("bye")) state="hello";
else if (state.euqals("hello")) state="hi";
else if (state.euqals("hi")) state="bye";
这就是 "开关切换状况",是将state的状况从"hello"切换到"hi",再切换到""bye";在切换到"hello",好象一个旋转开关,这种状况改变便可以利用State情势了.
假如纯真有上面一种将"hello"-->"hi"-->"bye"-->"hello"这一个方向切换,也不一定需求利用State情势,因为State情势会成立很多子类,复杂化,但是假如又发生别的一个行为:将上面的切换方向反过来切换,大概需求肆意切换,就需求State了.
请看下例:
public class Context{
private Color state=null;
public void push(){
//假如当前red状况 就切换到blue
if (state==Color.red) state=Color.blue;
//假如当前blue状况 就切换到green
else if (state==Color.blue) state=Color.green;
//假如当前black状况 就切换到red
else if (state==Color.black) state=Color.red;
//假如当前green状况 就切换到black
else if (state==Color.green) state=Color.black;
Sample sample=new Sample(state);
sample.operate();
}
public void pull(){
//与push状况切换恰好相反
if (state==Color.green) state=Color.blue;
else if (state==Color.black) state=Color.green;
else if (state==Color.blue) state=Color.red;
else if (state==Color.red) state=Color.black;
Sample2 sample2=new Sample2(state);
sample2.operate();
}
}
以上是“筹划情势之State[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:用Java实现数据库操纵系统
- ·下一篇文章:筹划情势之Flyweight
- ·中查找“筹划情势之State”更多相关内容
- ·中查找“筹划情势之State”更多相关内容