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

北京知名的网站建设公司什么是搜索引擎优化

北京知名的网站建设公司,什么是搜索引擎优化,wordpress文章样式插件,做技术网站赚钱允许一个对象内部状态改变时改变它的行为,对象看起来似乎修改了它的类 问题: 状态模式和有限状态机紧密相关。其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中, 程序的行为都不相同, 且可瞬间从一个…

  允许一个对象内部状态改变时改变它的行为,对象看起来似乎修改了它的类

问题:

  状态模式和有限状态机紧密相关。其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中, 程序的行为都不相同, 且可瞬间从一个状态切换到另一个状态。 不过, 根据当前状态, 程序可能会切换到另外一种状态, 也可能会保持当前状态不变。 这些数量有限且预先定义的状态切换规则被称为转移。而状态判断通常是由比较多的条件判断语句实现(而过多的状态判断会导致我们项目维护变得更加困难,而且还很臃肿),也可以依据当前对象状态选择响应的行为。

解决方案:

 状态模式建议为对象的所有可能状态新建一个类, 然后将所有状态的对应行为抽取到这些类中。
原始对象被称为上下文 (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 List<String> 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...

状态模式适合应用场景

  1.  如果对象需要根据自身当前状态进行不同行为, 同时状态的数量非常多且与状态相关的代码会频繁变更的话, 可使用状态模式。
  2.  模式建议你将所有特定于状态的代码抽取到一组独立的类中。 这样一来, 你可以在独立于其他状态的情况下添加新状态或修改已有状态, 从而减少维护成本。
  3.  如果某个类需要根据成员变量的当前值改变自身行为, 从而需要使用大量的条件语句时, 可使用该模式。
  4.  状态模式会将这些条件语句的分支抽取到相应状态类的方法中。 同时, 你还可以清除主要类中与特定状态相关的临时成员变量和帮手方法代码。
  5.  当相似状态和基于条件的状态机转换中存在许多重复代码时, 可使用状态模式。
  6.  状态模式让你能够生成状态类层次结构, 通过将公用代码抽取到抽象基类中来减少重复。 

如果状态机只有很少的几个状态, 或者很少发生改变,则无需使用此模型。 

http://www.ritt.cn/news/13931.html

相关文章:

  • 建设工程质量+协会网站谷歌关键词工具
  • 作文网投稿网站个人网站推广平台大全
  • 杭州哪家公司做网站比较好外贸订单怎样去寻找
  • 网站制作顺序百度招聘2022年最新招聘
  • 北京网站搭建报价宁波网站推广大全
  • dw中用php做网站哈尔滨推广优化公司
  • 网站游戏下载网站增加外链的方法有哪些
  • 个人网站 可以自己做服务器2023年4 5月份疫情结束吗
  • 北京服装设计公司排名前十强站长工具seo综合查询怎么使用的
  • 工作证明范本网站关键词优化费用
  • 付费抽奖网站怎么做中国国家培训网是真的吗
  • avian wordpress搜索引擎优化seo应用
  • 做网站需要什么人员最近10条重大新闻
  • wordpress分类归档不科学做seo需要哪些知识
  • 中企动力z云邮企业邮箱登录seo入门视频
  • 印刷外贸好做吗合肥seo优化外包公司
  • 章莹颖被卖做性奴网站站长工具在线查询
  • 个人网站名字取名怎么做在线查网站的ip地址
  • 网站推广外链网站域名查询网
  • 设计和建设一个网站要多少钱营业推广方案怎么写
  • 十堰网站制作公司seo公司重庆
  • 望京网站建设公司qq推广软件
  • 在线网站建设百度100%秒收录
  • 海口网站建设多少钱如何做网站关键词优化
  • wordpress搬家后台还是老网站seo公司官网
  • 福州光电网站建设我对网络营销的理解
  • 网站基本模板百度秒收录技术最新
  • 中文域名转码网站网站到首页排名
  • dedecms 获取网站地址什么是seo
  • 做网站app要注册哪类商标自媒体发布平台有哪些