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

响应式网站设计案例百度关键词搜索量

响应式网站设计案例,百度关键词搜索量,固原网站制作,做的最好的择日择时的网站目录 一、 啥是状态模式?二、 为什么要用状态模式?三、 状态模式的实现方式四、 状态模式的优缺点五、 状态模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

在这里插入图片描述

目录

    • 一、 啥是状态模式?
    • 二、 为什么要用状态模式?
    • 三、 状态模式的实现方式
    • 四、 状态模式的优缺点
    • 五、 状态模式的应用场景
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解责任链模式请看: (十 六)趣学设计模式 之 责任链模式!
✨更多请看个人主页: 码熔burning

这篇文章带你详细认识一下设计模式中的状态模式

一、 啥是状态模式?

想象一下,你正在玩一个游戏 🎮。你的角色会根据不同的情况(比如受伤、正常、加速)而拥有不同的行为和能力。 状态模式就像是给你的角色穿上不同的“衣服”,每件“衣服”代表一种状态,不同的状态决定了角色不同的行为。

状态模式,就是允许对象在内部状态改变时改变它的行为! 它可以将对象的行为封装到不同的状态类中,使得对象可以在不同的状态下表现出不同的行为 🎁。

简单来说,就是让对象像变色龙一样,根据不同的状态,展现不同的行为!

  • 你需要根据对象的状态来改变它的行为: 就像你需要根据角色的状态来决定它的攻击方式 ⚔️!
  • 对象的状态会频繁变化: 就像你需要根据游戏进程不断调整角色的状态 🔄!
  • 你需要避免大量的 if-else 语句来判断对象的状态: 就像你需要避免写一堆代码来判断角色当前应该使用哪种攻击方式 😵‍💫!

二、 为什么要用状态模式?

用状态模式,好处多多 👍:

  • 封装状态和行为: 将每个状态的行为封装到单独的类中,使得代码更加清晰易懂 💫!
  • 易于扩展: 可以方便地添加新的状态,而无需修改现有代码 ➕!
  • 避免大量的 if-else 语句: 使得代码更加简洁优雅 ✨!
  • 提高代码的可维护性: 将每个状态的逻辑封装起来,使得代码更加清晰易懂 💡!

三、 状态模式的实现方式

状态模式主要包含三个核心概念:

  • 环境类(Context): 持有当前状态的引用,并将客户端的请求委托给当前状态处理 🏠!
  • 抽象状态类(State): 定义了所有状态都需要实现的接口,通常包含一个处理请求的方法 🤝!
  • 具体状态类(ConcreteState): 实现了抽象状态类的接口,负责处理特定状态下的请求 ⚙️!
// 环境类:电梯public class Lift {private LiftState state; // 当前状态public Lift() {this.state = new StopState(); // 初始状态为停止状态this.state.setContext(this); // 设置环境类}public void setState(LiftState state) {this.state = state;this.state.setContext(this); // 设置环境类}public LiftState getState() {return state;}public void open() {this.state.open();}public void close() {this.state.close();}public void run() {this.state.run();}public void stop() {this.state.stop();}
}// 抽象状态类:电梯状态public abstract class LiftState {protected Lift context; // 环境类public void setContext(Lift context) {this.context = context;}public abstract void open(); // 开门public abstract void close(); // 关门public abstract void run(); // 运行public abstract void stop(); // 停止
}// 具体状态类:停止状态public class StopState extends LiftState {@Overridepublic void open() {System.out.println("电梯开门了...");context.setState(new OpenState()); // 切换到开门状态}@Overridepublic void close() {// 停止状态不能关门}@Overridepublic void run() {context.setState(new RunState()); // 切换到运行状态System.out.println("电梯开始运行...");}@Overridepublic void stop() {System.out.println("电梯停止了...");}
}// 具体状态类:运行状态public class RunState extends LiftState {@Overridepublic void open() {// 运行状态不能开门}@Overridepublic void close() {// 运行状态不能关门}@Overridepublic void run() {System.out.println("电梯正在运行...");}@Overridepublic void stop() {System.out.println("电梯停止了...");context.setState(new StopState()); // 切换到停止状态}
}// 具体状态类:开门状态public class OpenState extends LiftState {@Overridepublic void open() {System.out.println("电梯门已经打开...");}@Overridepublic void close() {System.out.println("电梯关门了...");context.setState(new CloseState()); // 切换到关门状态}@Overridepublic void run() {// 开门状态不能运行}@Overridepublic void stop() {// 开门状态不能停止}
}// 具体状态类:关门状态public class CloseState extends LiftState {@Overridepublic void open() {// 关门状态不能开门}@Overridepublic void close() {System.out.println("电梯门已经关闭...");}@Overridepublic void run() {System.out.println("电梯开始运行...");context.setState(new RunState()); // 切换到运行状态}@Overridepublic void stop() {// 关门状态不能停止}
}// 客户端public class Client {public static void main(String[] args) {Lift lift = new Lift();lift.open(); // 电梯开门了...lift.close(); // 电梯关门了...lift.run();  // 电梯开始运行...lift.stop(); // 电梯停止了...lift.getState().open(); // 电梯开门了...}
}

代码解释

  • Lift 类是环境类,持有当前电梯状态的引用,并将客户端的请求委托给当前状态处理。
  • LiftState 类是抽象状态类,定义了所有电梯状态都需要实现的接口,包括 opencloserunstop 方法。
  • StopState 类、RunState 类和 OpenState 类是具体状态类,实现了 LiftState 类的接口,负责处理特定状态下的请求。

输出结果

电梯开门了...
电梯关门了...
电梯开始运行...
电梯停止了...
电梯开门了...

四、 状态模式的优缺点

优点:

  • 封装状态和行为 💫!
  • 易于扩展 ➕!
  • 避免大量的 if-else 语句 ✨!
  • 提高代码的可维护性 💡!

缺点:

  • 状态类增多,增加代码复杂度 😫!
  • 状态切换逻辑可能分散在多个状态类中,不易维护 🤯!

五、 状态模式的应用场景

  • 游戏角色状态: 正常、受伤、死亡等等 🎮!
  • 订单状态: 待支付、已支付、已发货、已完成等等 🛒!
  • TCP 连接状态: 监听、已连接、已关闭等等 🌐!
  • 工作流引擎: 定义任务的不同状态和状态转换 ⚙️!

六、 总结

  • 状态模式就像变色龙,根据不同的状态,展现不同的行为! 🦎
  • 核心概念包括环境类、抽象状态类和具体状态类! 🔑
  • 优点是封装状态和行为、易于扩展、避免大量的 if-else 语句、提高代码的可维护性! 👍
  • 缺点是状态类增多,增加代码复杂度、状态切换逻辑可能分散在多个状态类中,不易维护! 👎
  • 适用于对象的状态会频繁变化,并且需要根据状态来改变其行为的场景! 🎯

希望这篇文章能让你彻底理解状态模式! 💯 祝你学习愉快! 😄
看完请看:(十 八)趣学设计模式 之 观察者模式!

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

相关文章:

  • 济南专业网站建设合肥seo排名优化公司
  • 做网站维护学什么编程语言下载百度网盘app最新版
  • 科技画4k纸科幻画天津网站优化公司
  • 做母婴育儿类网站好做seo排名吗百度推广二级代理商
  • 做网站的如何说服客户企业网站seo
  • 金华网站建设优化技术网络营销属于什么专业类型
  • 建设一个网站可以采用那几方案账号seo是什么
  • 网站没收录可以做推广吗全网关键词搜索
  • 公司网站 设计方案2021友情链接qq群
  • 常州网站建设公司信息济南搜索引擎优化网站
  • 医院做网站网站优化seo培
  • muse网站设计解决方案视频教程网站推广优化公司
  • 东昌府区建设局网站西安新站网站推广优化
  • 网站照片上传不了怎么办郑州seo排名公司
  • 北京教育云平台网站建设咸阳网络推广
  • 黑人与白人做爰网站cnzz统计
  • 怎样用自己的服务器做网站如何在百度推广
  • 武汉招聘网站制作软文有哪些发布平台
  • 网站怎么做sem优化微信软文是什么意思
  • 网站改版方案原则百度seo系统
  • web开发是做网站北京网络营销公司
  • 网站建设制作优化深圳网站设计专家乐云seo
  • 门户网站网站建设电商网站订烟平台
  • 国内网站建设哪家好网络推广的基本渠道
  • 软件下载网站哪个比较好小程序开发一个多少钱啊
  • 适合做公司网站的cms百度搜索量统计
  • 手机端网站制作教程推广平台软件有哪些
  • 谷歌云 搭建wordpressseo网络推广知识
  • 南部建设局网站郑州seo优化外包公司
  • 去菲律宾做it网站开发制作自己的网站