当前位置: 首页 > news >正文

h5页面 个人网站青海 网站开发 图灵

h5页面 个人网站,青海 网站开发 图灵,广州网站建设的价格,有口碑的网站建设公司允许一个对象内部状态改变时改变它的行为#xff0c;对象看起来似乎修改了它的类 问题#xff1a; 状态模式和有限状态机紧密相关。其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中#xff0c; 程序的行为都不相同#xff0c; 且可瞬间从一个…  允许一个对象内部状态改变时改变它的行为对象看起来似乎修改了它的类 问题 状态模式和有限状态机紧密相关。其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中 程序的行为都不相同 且可瞬间从一个状态切换到另一个状态。 不过 根据当前状态 程序可能会切换到另外一种状态 也可能会保持当前状态不变。 这些数量有限且预先定义的状态切换规则被称为转移。而状态判断通常是由比较多的条件判断语句实现而过多的状态判断会导致我们项目维护变得更加困难而且还很臃肿也可以依据当前对象状态选择响应的行为。 解决方案 状态模式建议为对象的所有可能状态新建一个类 然后将所有状态的对应行为抽取到这些类中。 原始对象被称为上下文 context 它并不会自行实现所有行为 而是会保存一个指向表示当前状态的状态对象的引用 且将所有与状态相关的工作委派给该对象。 文档将工作委派给一个状态对象文档将工作委派给一个状态对象。如需将上下文转换为另外一种状态 则需将当前活动的状态对象替换为另外一个代表新状态的对象。 采用这种方式是有前提的 所有状态类都必须遵循同样的接口 而且上下文必须仅通过接口与这些对象进行交互。 这个结构可能看上去与策略模式相似 但有一个关键性的不同——在状态模式中 特定状态知道其他所有状态的存在 且能触发从一个状态到另一个状态的转换 策略则几乎完全不知道其他策略的存在。 状态模式结构和其角色 在 Java 语言中 状态模式通常被用于将基于 switch语句的大型状态机转换为对象。 这里是核心 Java 程序库中一些状态模式的示例 javax.faces.lifecycle.LifeCycle#execute() 由Faces­Servlet控制 行为依赖于当前 JSF 生命周期的阶段 状态 识别方法 状态模式可通过受外部控制且能根据对象状态改变行为的方法来识别。 上代码 public abstract class State {Player player;State(Player player) {this.player player;}public abstract String onLock();public abstract String onPlay();public abstract String onNext();public abstract String onPrevious(); } public class LockedState extends State {LockedState(Player player) {super(player);player.setPlaying(false);}Overridepublic String onLock() {if (player.isPlaying()) {player.changeState(new ReadyState(player));return Stop playing;} else {return Locked...;}}Overridepublic String onPlay() {player.changeState(new ReadyState(player));return Ready;}Overridepublic String onNext() {return Locked...;}Overridepublic String onPrevious() {return Locked...;} } public class ReadyState extends State {public ReadyState(Player player) {super(player);}Overridepublic String onLock() {player.changeState(new LockedState(player));return Locked...;}Overridepublic String onPlay() {String action player.startPlayback();player.changeState(new PlayingState(player));return action;}Overridepublic String onNext() {return Locked...;}Overridepublic String onPrevious() {return Locked...;} } public class Player {private State state;private boolean playing false;private ListString playlist new ArrayList();private int currentTrack 0;public Player() {this.state new ReadyState(this);setPlaying(true);for (int i 1; i 12; i) {playlist.add(Track i);}}public void changeState(State state) {this.state state;}public State getState() {return state;}public void setPlaying(boolean playing) {this.playing playing;}public boolean isPlaying() {return playing;}public String startPlayback() {return Playing playlist.get(currentTrack);}public String nextTrack() {currentTrack;if (currentTrack playlist.size() - 1) {currentTrack 0;}return Playing playlist.get(currentTrack);}public String previousTrack() {currentTrack--;if (currentTrack 0) {currentTrack playlist.size() - 1;}return Playing playlist.get(currentTrack);}public void setCurrentTrackAfterStop() {this.currentTrack 0;} } public class Client{private Player player;public Client(Player player){this.player player;}public void test(){System.out.println( player.getState().onPlay());System.out.println( player.getState().onLock());System.out.println( player.getState().onNext());System.out.println( player.getState().onPrevious());} } 测试 public class Demo {public static void main(String[] args) {Player player new Player();Client client new Client(player);client.test();} } Paused... Stop playing Locked... Locked... 状态模式适合应用场景 如果对象需要根据自身当前状态进行不同行为 同时状态的数量非常多且与状态相关的代码会频繁变更的话 可使用状态模式。 模式建议你将所有特定于状态的代码抽取到一组独立的类中。 这样一来 你可以在独立于其他状态的情况下添加新状态或修改已有状态 从而减少维护成本。 如果某个类需要根据成员变量的当前值改变自身行为 从而需要使用大量的条件语句时 可使用该模式。 状态模式会将这些条件语句的分支抽取到相应状态类的方法中。 同时 你还可以清除主要类中与特定状态相关的临时成员变量和帮手方法代码。 当相似状态和基于条件的状态机转换中存在许多重复代码时 可使用状态模式。 状态模式让你能够生成状态类层次结构 通过将公用代码抽取到抽象基类中来减少重复。  如果状态机只有很少的几个状态 或者很少发生改变则无需使用此模型。 
文章转载自:
http://www.morning.rshkh.cn.gov.cn.rshkh.cn
http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn
http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn
http://www.morning.pdghl.cn.gov.cn.pdghl.cn
http://www.morning.znqztgc.cn.gov.cn.znqztgc.cn
http://www.morning.hdzty.cn.gov.cn.hdzty.cn
http://www.morning.zwgrf.cn.gov.cn.zwgrf.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.wrkcw.cn.gov.cn.wrkcw.cn
http://www.morning.ryzgp.cn.gov.cn.ryzgp.cn
http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn
http://www.morning.rfycj.cn.gov.cn.rfycj.cn
http://www.morning.nrddx.com.gov.cn.nrddx.com
http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn
http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn
http://www.morning.ljdtn.cn.gov.cn.ljdtn.cn
http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn
http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn
http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn
http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn
http://www.morning.cmcjp.cn.gov.cn.cmcjp.cn
http://www.morning.fgtls.cn.gov.cn.fgtls.cn
http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn
http://www.morning.fpczq.cn.gov.cn.fpczq.cn
http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.morning.fnssm.cn.gov.cn.fnssm.cn
http://www.morning.ffdyy.cn.gov.cn.ffdyy.cn
http://www.morning.qhqgk.cn.gov.cn.qhqgk.cn
http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn
http://www.morning.dzpnl.cn.gov.cn.dzpnl.cn
http://www.morning.kzpy.cn.gov.cn.kzpy.cn
http://www.morning.rysmn.cn.gov.cn.rysmn.cn
http://www.morning.ksqzd.cn.gov.cn.ksqzd.cn
http://www.morning.kflzy.cn.gov.cn.kflzy.cn
http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.xpmhs.cn.gov.cn.xpmhs.cn
http://www.morning.hkysq.cn.gov.cn.hkysq.cn
http://www.morning.wqnc.cn.gov.cn.wqnc.cn
http://www.morning.sbrrf.cn.gov.cn.sbrrf.cn
http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn
http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn
http://www.morning.gdgylp.com.gov.cn.gdgylp.com
http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn
http://www.morning.mzwqt.cn.gov.cn.mzwqt.cn
http://www.morning.wschl.cn.gov.cn.wschl.cn
http://www.morning.xwgbr.cn.gov.cn.xwgbr.cn
http://www.morning.ywndg.cn.gov.cn.ywndg.cn
http://www.morning.xmjzn.cn.gov.cn.xmjzn.cn
http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.morning.txltb.cn.gov.cn.txltb.cn
http://www.morning.tktyh.cn.gov.cn.tktyh.cn
http://www.morning.knmby.cn.gov.cn.knmby.cn
http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn
http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn
http://www.morning.cytr.cn.gov.cn.cytr.cn
http://www.morning.qcnk.cn.gov.cn.qcnk.cn
http://www.morning.jcfg.cn.gov.cn.jcfg.cn
http://www.morning.ttfh.cn.gov.cn.ttfh.cn
http://www.morning.nxfuke.com.gov.cn.nxfuke.com
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.rhchr.cn.gov.cn.rhchr.cn
http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn
http://www.morning.rdtq.cn.gov.cn.rdtq.cn
http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn
http://www.morning.rdtq.cn.gov.cn.rdtq.cn
http://www.morning.rwlnk.cn.gov.cn.rwlnk.cn
http://www.morning.dydqh.cn.gov.cn.dydqh.cn
http://www.morning.fssjw.cn.gov.cn.fssjw.cn
http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn
http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn
http://www.morning.kjgdm.cn.gov.cn.kjgdm.cn
http://www.morning.ljngm.cn.gov.cn.ljngm.cn
http://www.morning.lblsx.cn.gov.cn.lblsx.cn
http://www.morning.mqfw.cn.gov.cn.mqfw.cn
http://www.morning.c7627.cn.gov.cn.c7627.cn
http://www.tj-hxxt.cn/news/252635.html

相关文章:

  • 绍兴高端网站设计品牌网站和优化网站
  • 沈阳网站推广wordpress技术博客模板
  • 潍坊网站制作案例爱客影院wordpress
  • 如何为网站做优化北京常规网络营销电话
  • 美容美发化妆品培训企业网站源码带后台php织梦dede5.7新手怎样做网络营销推广
  • 正规的外贸网站建设公司做网站设计提成赚钱吗
  • 电脑网站在哪里找支付网站认证费用怎么做分录
  • 佛山网站设计是用帝国cms做门户网站
  • 苏州吴江区建设局网站山东大学经济研究院
  • 上传网站步骤店铺装修设计网
  • 网站建设2018需要什么网站怎么做伪静态
  • 大型商城网站开发网站首页图片 代码
  • vue快速搭建网站上海网站注销吗
  • 可发外链的高权重网站美容院装修
  • 俄语网站周口市网站建设
  • 合肥建网站公司网络优化软件哪个好
  • 计算机网站开发就业形势可以申请域名的网站
  • 南京网站推广¥做下拉去118crwordpress迅雷下载地址
  • 做网站的销售关于购物网站建设的论文
  • 网站建设开发平台关键词是在网站后台做的吗
  • 二维码网站建设做网站 用虚拟服务器iis
  • wordpress主题讲解seo优化专员编辑
  • 深圳欧啦啦网站建设设计制作散发寄递销售给予处分
  • 上海网站建设企业名录wordpress制作rss
  • 语言互动网站建设wordpress 抱歉您不能访问此页面
  • 高端 网站开发网站建设问题
  • 杭州个人网站建设商城网站建设报价单
  • 网站后台验证码不显示个人网站建设需要备案吗
  • 运营商网站登录注册wordpress外贸教程
  • 郑州 外包网站wordpress的图片主题