java项目案例分析(java项目实例代码)

Java中的状态设计模式是一种软件设计模式,当对象的内部状态更改时,该模式允许对象更改其行为。状态设计模式通常用于以下情况:对象取决于其状态,并且在运行期间必须根据其内部状态更改其行为。状态设计模式是许多行为设计模式之一,因此表征了运行时难以遵循的对象之间的控制流。状态封装是管理软件变更的绝佳方法。在本文中,我们将讨论状态设计模式动机的关键方面,描述状态动机,提及实现该动机的关键参与者,并使用代码示例来演示其用法。

什么是状态设计模式?(状态设计模式实际示例)

在计算机网络中,TCP(传输控制协议)是一种用于定义如何建立和维护连接的标准,应用程序可以通过该连接交换数据。TCP连接对象可以处于以下状态:

  • 1.建立状态
  • 2.聆听状态
  • 3.封闭状态

TCP(传输控制协议)连接对象可以基于其当前状态来响应请求。状态设计模式是实现此类方案的理想方式,它可以描述TCP连接在每种状态下如何表现出不同的行为。通常,该方法是引入一个称为TCPState的抽象类来表示网络连接的状态。然后,代表已建立,正在侦听和已关闭状态的类将使用TCPState。

我们还可以使用另一个名为Connection的类,该类可用于表示TCP连接的当前状态。特定于状态对象的请求由连接类委派,并使用状态的实例对连接的状态执行预期的操作。通常,每当更改连接状态时,Connection对象都会更改其使用的状态实例。例如,假设我们有3个状态对象实例来表示已建立状态,侦听状态和关闭状态,而Connection对象目前正在使用已建立的实例,并且如果发生任何更改,则连接对象可以将已建立的实例替换为TCPState的已关闭实例。

Java示例中的这种状态设计模式清楚地说明了其意图,即当内部状态更改时,对象可以更改其行为。该对象似乎更改了其类。Java中的状态设计模式用于封装对象基于其内部状态的变化行为。

Java中的状态设计模式示例

在继续演示Java状态设计模式的代码示例之前,让我们首先了解什么是我们需要更好理解示例的关键类(参与者)。

  • 上下文界面

上下文定义一个接口,该接口维护定义当前状态的ConcreteState子类的实例。

  • 状态界面

状态定义了一个接口,用于封装与上下文的特定状态关联的行为。

  • ConcreteState子类

如前所述,具体状态子类可以被视为连接对象处于(建立,聆听或关闭)状态的实例。它们实现了上下文状态的行为。

Java示例中的状态设计模式

我们将演示游戏开始和暂停功能的高度简化版本。实现如下:

1. 状态界面

状态接口将由不同的状态类实现,以根据其要求覆盖doAction方法。这只是不同州的蓝图。

java项目案例分析(java项目实例代码)-1

2. StartState类

StartState是一个具体的子类,代表游戏的“开始状态”。它覆盖了从接口继承的方法,并且还具有一个返回“开始状态”的字符串的方法。

java项目案例分析(java项目实例代码)-2

3. 停止状态类

停止状态也是状态接口的具体子类。唯一的变化是它代表游戏的“暂停”状态。

java项目案例分析(java项目实例代码)-3

4. 上下文(环境)

如前所述,上下文在我们的案例中维护了ConcreteState子类,StopState或Start状态的实例。

java项目案例分析(java项目实例代码)-4

5. 状态设计模式演示

将startState.doAction方法传递给上下文对象以设置应用程序的当前状态。然后,上下文的getState方法返回当前状态,并且具体状态类内部的toString方法用于执行由当前状态定义的所需操作。

java项目案例分析(java项目实例代码)-5

上下文类将特定于状态的请求委托给ConcreteState对象(在本例中为startstate / stopstate)。状态对象通过上下文传递为访问上下文的参数。

在Java状态设计模式的帮助下,我们获得了什么?

  • 状态设计模式Java示例向我们展示了它允许我们根据对象的内部状态向其添加尽可能多的行为。
  • Java中的状态设计模式将特定于状态的行为本地化。特定于状态的代码位于状态子类中,这使我们更容易通过定义新的子类来添加新状态。这意味着我们的代码可以轻松扩展。
  • 即使Java中的状态设计模式可以增加表示不同状态的类的数量。如果不是这种情况,那么我们最终将使用大型条件语句来检查很多事情。在Java中使用状态设计模式时,我们仅需要确定对象的内部状态是否已更改。

结论

如果我们对对象的每个状态有不同的行为,则应使用Java中的状态设计模式。可能是我们可能需要在运行时配置转换。它还可以在为游戏创建GUI时派上用场。在运行时,用户可能希望为特定级别使用不同的界面,或者游戏本身可能根据所玩游戏的级别更改状态。

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 红包的寓意(发红包的寓意和象征)

    派”红包”是新年的一种习俗,中国人喜爱红色,因为红色象征着活力、愉快与好运。派发红包给未成年的晚辈,是表示把祝福和好运带给他们。那么接下来让理工君带大家领略一下红包的发展和寓意吧。…

    2022年7月4日 投稿
  • bose睡眠耳机怎么连接(sleepbuds睡眠耳机怎么连接)

    在我出差专用的洗漱包里,有一个圆形的小盒子。盒子里放的不是隐形眼镜,而是一对 3M 耳塞。 自从 5、6 年前,第一次接触 3M 耳塞起,我就认为它是人类最伟大的发明之一。对于睡眠…

    2022年8月7日 投稿
  • 联想投影仪质量怎么样(联想h3s投影仪参数)

    【科技犬】 对于一款投影仪来说,亮度、对比度和分辨率这三个因素是非常重要的,直接影响着一款投影仪设备的质量好坏,对于用户的观影体验也是最直接、最必要的因素。说到家庭智能投影仪以其大…

    2022年3月1日 投稿
  • 王者段位继承规则表(王者新段位继承规则调整,新增两个大段)

    王者荣耀正式服将在1月2日结束S25荣耀战令,随后的两周内就会开启S26赛季,而这一次的S26赛季皮肤已经正式官宣,这是达摩的一款勇者皮肤,命名为:沙漠行僧,简称沙僧,参与排位赛即…

    2022年5月25日
  • 现在什么手机能比较好用一些(推荐一款好用的手机)

    1、小米11 小米特别看重性价比,对于这一次活动也做出不少优惠,同样小米11的口碑还是很不错的,成为了该价位热度最高的机型。小米11的综合性能也很突出,采取了小米之前的风格,硬件配…

    2022年1月12日
  • 如何连接网络打印机(打印机网络连接怎么连接)

    1 即到哥出的这篇网络打印机安装驱动教程,所有网络打印机安装的通用教程,只要撑握这一种方法,可以适用于所有网络打印机安装。 一家外包公司最近买了一台东芝e-STUDIO2000AC…

    2022年6月9日 投稿
  • 绝地求生进不去怎么办(绝地求生登录不进)

    吃鸡游戏一直在国内受瞩目,很多人喜欢体验,就像现实战斗一样,所以最近玩家甚至增加更快,PUBG免费绝地求生进不去/连不上/登不上/打不开游戏,也是可能因为最近PUBG绝地求生即将免…

    2022年6月6日 投稿
  • 医保怎么交(医保在手机上怎么缴费)

    人食五谷,难免会生病。一旦生病,就得花钱,轻则几百,重则数十万。 于是国家给了我们看病的基础福利——医保,人人都买得起,看病还能报销不少钱。 但说到医保,具体怎么交?在哪里交?大多…

    2022年5月23日 投稿
  • 车险计算器软件下载(2022年车险计算器)

    DMS保险计算器 (远离纸, 一键搞定!) 作为销售,你总想让客户一起买个车险啥的,客户突然问: 这辆车要多少保费? 别懵逼,稳住! 还在急着去找纸笔?out 了! DMS给你一个…

    2022年5月3日 投稿
  • 如何做蛋糕(如何做蛋糕 烤箱)

    想吃蛋糕不用买,教你一个在家也能做的方法,5就鸡蛋就能搞定! 而且还不添加任何防腐剂,香甜软糯,如果在家有时间,就可以做给自己的家人吃,下面我会把想吃的制作方法分享给大家,按照每一…

    2022年6月10日 投稿
品牌推广 在线咨询
返回顶部