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

政府网站集群建设方案哪个搜索引擎最好用

政府网站集群建设方案,哪个搜索引擎最好用,网站整站出售,吴忠北京网站建设状态设计模式 🚩什么是状态设计模式?🚩状态设计模式的特点🚩状态设计模式的结构🚩状态设计模式的优缺点🚩状态设计模式的Java实现🚩代码总结🚩总结 🚩什么是状态设计模式…

状态设计模式

  • 🚩什么是状态设计模式?
  • 🚩状态设计模式的特点
  • 🚩状态设计模式的结构
  • 🚩状态设计模式的优缺点
  • 🚩状态设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是状态设计模式?

状态设计模式(State Pattern) 是一种 行为型设计模式,它允许对象在 内部状态改变时改变其行为,看起来就像改变了它的类。

使用场景

  • 有限状态机(如贩卖机、订单状态管理、流程控制等)

  • 状态切换(如任务状态、权限控制、游戏角色状态等)

  • 减少 if-else 逻辑,使代码更清晰

🚩状态设计模式的特点

  • 封装状态:将状态封装为独立的类,使得状态切换更加清晰。

  • 消除大量 if-else 语句,提高代码的可维护性。

  • 状态与行为绑定,对象的行为取决于当前状态。

  • 遵循开闭原则,增加新状态时无需修改已有代码。

🚩状态设计模式的结构

状态模式主要由以下角色组成:

  • Context(上下文):维护当前状态,并定义状态切换的方法。

  • State(状态接口):定义所有具体状态的公共接口。

  • ConcreteState(具体状态类):实现 State 接口,并定义当前状态下的行为。

图例:

在这里插入图片描述

🚩状态设计模式的优缺点

✅ 优点

  • 减少 if-else 语句,提高代码的可读性和可维护性。

  • 状态变化时可以方便地扩展,符合 开闭原则

  • 将状态与具体行为解耦,使代码更清晰。

❌ 缺点

  • 类的数量增加,每个状态都需要单独定义一个类。

  • 如果状态过多,可能导致状态类泛滥。

🚩状态设计模式的Java实现

代码地址:GitHub

  • 创建状态接口State
/*** @author hanso* @description: 状态接口* @date 2025-03-26 00:20:37* @version: 1.0*/
public interface State {public void Handle(Context context);
}
  • 定义两个具体的状态类型StateAStateBStateA表示有货,StateB表示无货

    • StateA
    /*** @author hanso* @description: 状态A 有货* @date 2025-03-26 00:22:37* @version: 1.0*/
    public class StateA implements State { // 有货@Overridepublic void Handle(Context context) {int count = context.getCount();if (count >= 1) {System.out.println("购买成功!");context.setCount(count - 1);if (context.getCount() == 0){context.setState(new StateB());}} else {System.out.println("购买失败!");}}
    }
    
    • StateB
    /*** @author hanso* @description: 状态B 无货* @date 2025-03-26 00:24:22* @version: 1.0*/
    public class StateB implements State { // 无货@Overridepublic void Handle(Context context) {int count = context.getCount();if (count == 0) {System.out.println("购买失败!等待补货");context.setCount(5);System.out.println("补货成功,请重新购买");context.setState(new StateA());}}
    }
    
  • 创建上下文Context

/*** @author hanso* @description: 上下文* @date 2025-03-26 00:21:08* @version: 1.0*/
public class Context {// 贩卖机private int count;private State state;public Context() {count = 3;state = new StateA();}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public State getState() {return state;}public void setState(State state) {this.state = state;}public void Request() { // 购买一个饮料state.Handle(this);}
}
  • 测试状态设计模式
/*** @author hanso* @description: 测试状态模式* @date 2025-03-26 00:25:38* @version: 1.0*/
public class StatePattern {public static void main(String[] args) {Context context = new Context(); // count:3System.out.println(context.getState());context.Request(); // 购买一个饮料 count = 2context.Request(); // 购买一个饮料 count = 1context.Request(); // 购买一个饮料 count = 0System.out.println(context.getState());context.Request(); // 无货 等待补货 补货成功 count = 5System.out.println(context.getState());context.Request(); // 购买一个饮料 count = 4System.out.println(context.getCount());}
}

📌 运行结果在这里插入图片描述

🚩代码总结

  • Context(上下文) 负责维护当前状态,并根据状态调用不同的行为。

  • State(状态接口) 定义了所有具体状态需要实现的方法。

  • StateA 和 StateB(具体状态类) 定义了不同状态下的行为。

  • 状态切换 发生在 Handle() 方法中,当满足特定条件时,状态转换。

🚩总结

  • 状态模式适用于有限状态机、任务管理等场景。

  • 消除了 if-else 逻辑,使代码更加清晰。

  • 状态变更时,只需新增状态类,不影响已有代码。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/wzjs/225165.html

相关文章:

  • 江津区住房和城乡建设委员会网站爱站网关键词挖掘工具站长工具
  • 游戏网站怎么赚钱宣传推广方案
  • 本地建站软件班级优化大师客服电话
  • 门户网站含义阿里云建站费用
  • 制作网站价格不一品牌营销策划是干嘛的
  • 上传网站空间的建站程序怎么删除徐州关键词优化排名
  • 做企业网站流程技能培训学校
  • 制作视频教程百度app优化
  • 论职能网站建设怎样制作一个网站
  • 务川网站建设公司品牌营销策划
  • 网站做端口映射淄博搜索引擎优化
  • 如皋网站建设招标中国最新军事新闻最新消息
  • 靖江做网站b2b免费发布网站大全
  • 沧州做家装的公司网站手机网站怎么优化关键词
  • 注册网站费用明细国内免费域名
  • 金湖建设局网站seo待遇
  • 做网站需要用什么开发软件文案发布平台
  • 做外贸如何选择网站南京seo排名优化
  • 网站域名注册商标kol营销模式
  • 最超值的手机网站建设新媒体平台
  • 外贸批发网站建设郑州seo顾问外包公司
  • 运城市做网站价格百度大数据查询
  • 网站百度贴吧2023第二波疫情已经到来了
  • 影视类网站建设如何做线上销售和推广
  • 免费注册自己的网站站长工具传媒
  • 刷QQ砖的网站咋做百度客户端在哪里打开
  • 保山公司做网站十大室内设计网站
  • 清溪网站建设百度知识营销
  • 网站设置安全百度一下首页版
  • 郑州金水区做网站公司北京seo服务商