java 设计模式之State(状态模式)
发布时间 - 2026-01-11 03:00:56 点击率:次java 设计模式之State(状态模式)

在状态模式中,一个类的行为基于它的状态的改变而改变。状态模式归属于行为型模式。
在下面的实例中,我们创建了一个接口State,定义了一个操作方法,两个实现类StartState和StopState。另外,创建了一个上下文类Context,这个类关联到State类。UML类图如下所示:
//状态类
public interface State {
public void doAction(Context context);
}
//实现类StartState.java
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";
}
}
//实现StopState.java
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";
}
}
//上下文Context.java 实际运用时可自行更改
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return 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());
}
}
输出结果
Player is in start state Start State Player is in stop state Stop State
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 设计模式之State
# State状态设计模式
# Java设计模式之状态模式State Pattern详解
# Java设计模式之状态模式
# 深入理解Java设计模式之状态模式
# Java设计模式之java状态模式详解
# 详解JAVA 设计模式之状态模式
# 对比Java设计模式编程中的状态模式和策略模式
# Java设计模式之状态模式(State模式)介绍
# Java状态设计模式实现对象状态转换的优雅方式
# 如有
# 希望能
# 所示
# 谢谢大家
# 操作方法
# 疑问请
# interface
# public
# brush
# void
# context
# implements
# doAction
# System
# class
# State
# StartState
# strong
# UML
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
郑州企业网站制作公司,郑州招聘网站有哪些?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel如何与Inertia.js和Vue/React构建现代单页应用
中国移动官方网站首页入口 中国移动官网网页登录
如何在万网自助建站中设置域名及备案?
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何基于PHP生成高效IDC网络公司建站源码?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
详解CentOS6.5 安装 MySQL5.1.71的方法
如何快速生成高效建站系统源代码?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何快速重置建站主机并恢复默认配置?
详解jQuery中基本的动画方法
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Laravel Fortify是什么,和Jetstream有什么关系
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
LinuxShell函数封装方法_脚本复用设计思路【教程】
如何在VPS电脑上快速搭建网站?
Python数据仓库与ETL构建实战_Airflow调度流程详解
微信小程序 五星评分(包括半颗星评分)实例代码
JavaScript如何实现类型判断_typeof和instanceof有什么区别
php打包exe后无法访问网络共享_共享权限设置方法【教程】
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
油猴 教程,油猴搜脚本为什么会网页无法显示?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
香港服务器租用每月最低只需15元?
手机网站制作与建设方案,手机网站如何建设?
Linux系统命令中tree命令详解
JS经典正则表达式笔试题汇总
南京网站制作费用,南京远驱官方网站?
如何在万网ECS上快速搭建专属网站?
如何用已有域名快速搭建网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
Java垃圾回收器的方法和原理总结

