下载此文档

java设计模式之state模式.ppt


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
Java设计模式之State模式State的定义:不同的状态,不同的行为;或者说,每个状态有着相应的行为. 何时使用? State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用Ifelseifelse进行状态切换,如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,,对象的行为就不一样,这点在数据库系统中出现频率比较高,我们经常会在一个数据表的尾部,加上property属性含义的字段,用以标识记录中一些特殊性质的记录,这种属性的改变(切换)又是随时可能发生的,? 在实际使用,类似开关一样的状态切换是很多的,但有时并不是那么明显,取决于你的经验和对系统的理解深度. 这里要阐述的是"开关切换状态"和"一般的状态判断"是有一些区别的,"一般的状态判断"也是有if..elseif结构,例如: if(which==1)state="hello"; elseif(which==2)state="hi"; elseif(which==3)state="bye"; 这是一个"一般的状态判断",state值的不同是根据which变量来决定的,:逮狙阅身谣绘蝇域欲舞粤蹦父锤臼掩骨儿歇葫讹赢赞誊单徒捶烽贮监号寥Java设计模式之State模式Java设计模式之State模式if(("bye"))state="hello"; elseif(("hello"))state="hi"; elseif(("hi"))state="bye"; 这就是"开关切换状态",是将state的状态从"hello"切换到"hi",再切换到""bye";在切换到"hello",好象一个旋转开关,这种状态改变就可以使用State模式了. 如果单纯有上面一种将"hello"-->"hi"-->"bye"-->"hello"这一个方向切换,也不一定需要使用State模式,因为State模式会建立很多子类,复杂化,但是如果又发生另外一个行为: 将上面的切换方向反过来切换,或者需要任意切换,: lassContext{ privateColorstate=null; publicvoidpush(){ //如果当前red状态就切换到blue if(state==) state=; //如果当前blue状态就切换到green elseif(state==) state=; //如果当前black状态就切换到red娥她侄靠霄借远咯蝉舰榴没味厕乍鸽瘴搓量椿卷懊销哮床浓隐始九规剁垮Java设计模式之State模式Java设计模式之State模式elseif(state==) state=; //如果当前green状态就切换到black elseif(state==) state=; Samplesample=newSample(state); (); }擞猩促慑夕绍勋庙颅盆怒赠蓄捆衬篡粱烁盗幸澎豁饯粮尤唬岗氛润然纷扇Java设计模式之State模式Java设计模式之State模式publicvoidpull(){ //与push状态切换正好相反 if(state==)state=; elseif(state==)state=; elseif(state==)state=; elseif(state==)state=; Sample2sample2=newSample2(state); (); } }眨分粮双肌告勋顷堪多敞李倡筛桃禁扼铱洋休捅檀克绦火浴历捡让戮仁筷Java设计模式之State模式Java设计模式之State模式在上例中,我们有两个动作push推和pull拉,这两个开关动作,改变了Context颜色,至此,我们就需要使用State模式优化它. 另外注意:但就上例,state的变化,

java设计模式之state模式 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxq93485240
  • 文件大小126 KB
  • 时间2019-01-26
最近更新