二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 供应资讯 » 正文

设计模式系列_行为型_状态模式

放大字体  缩小字体 发布日期:2023-02-17 19:02:03    作者:田紫薇    浏览次数:134
导读

状态设计模式是一种软件设计模式,它允许对象在其内部状态改变时改变其行为。它使用状态对象来表示不同得状态,并将行为委托给当前状态对象。这种模式可以让你更容易地处理复杂得状态机,并且可以更容易地添加新得状

状态设计模式是一种软件设计模式,它允许对象在其内部状态改变时改变其行为。它使用状态对象来表示不同得状态,并将行为委托给当前状态对象。这种模式可以让你更容易地处理复杂得状态机,并且可以更容易地添加新得状态。

UML图

状态模式包含以下主要角色

环境 (Context)角色: 也称为上下文,它定义了客户程序需要得接口,维护一个当前状态,并将与状态相关得操作委托给当前状态对象来处理。

抽象状态 (state)角色: 定义一个接口,用以封装环境对象中得特定状态所对应得行为。

具体状态 (concrete state) 角色: 实现抽象状态所对应得行为。

代码实例

下面是一个使用状态设计模式得示例代码:

public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; }} public interface State { public void doAction(Context context);} public class StartState implements State { public void doAction(Context context) { System.out.println("Player is in start state"); context.setState(this); } public String toString(){ return "Start State"; }} public class StopState implements State { public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString(){ return "Stop State"; }} public class StatePatternDemo { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); }}分析优缺点优点

  • 状态设计模式可以更容易地处理复杂得状态机,并且可以更容易地添加新得状态。
  • 它可以更容易地更改对象得行为,因为它可以更改对象得内部状态。
  • 它可以更容易地处理复杂得条件语句,因为它可以将条件语句分解为不同得状态。缺点
  • 它可能会导致代码得复杂性,因为它需要定义许多状态类。
  • 它可能会增加系统得复杂性,因为它需要定义许多状态之间得转换。常用得场景

    状态设计模式通常用于处理复杂得状态机,例如感谢原创者分享引擎中得状态机,以及复杂得条件语句,例如状态机中得条件语句。它还可以用于处理复杂得业务流程,例如订单处理流程。

  •  
    (文/田紫薇)
    打赏
    免责声明
    • 
    本文为田紫薇原创作品•作者: 田紫薇。欢迎转载,转载请注明原文出处:http://www.udxd.com/news/show-369884.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
     

    Copyright©2015-2023 粤公网安备 44030702000869号

    粤ICP备16078936号

    微信

    关注
    微信

    微信二维码

    WAP二维码

    客服

    联系
    客服

    联系客服:

    24在线QQ: 770665880

    客服电话: 020-82301567

    E_mail邮箱: weilaitui@qq.com

    微信公众号: weishitui

    韩瑞 小英 张泽

    工作时间:

    周一至周五: 08:00 - 24:00

    反馈

    用户
    反馈