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

java - 设计模式 - 状态模式

文章目录

  • 前言
    • java - 设计模式 - 状态模式
      • 1. 概述
      • 2. 作用
      • 3. 示例

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


java - 设计模式 - 状态模式

1. 概述

状态模式是一种行为型设计模式,它允许一个对象在其内部状态发生改变时改变其行为。这使得对象看起来好像修改了它的类。状态模式通常包括以下角色:

  • Context(上下文):它维护一个对当前状态对象的引用,并将客户端的请求委派给当前状态对象来处理;

  • State(状态):状态是一个接口或抽象类,它定义了一个或多个与上下文相关的动作。具体状态类实现这些动作,每个具体状态类代表了上下文的一种状态;

2. 作用

用于在对象的内部状态发生改变时改变对象的行为。这可以帮助你实现多种功能的状态驱动系统。

3. 示例

定义状态接口:

public interface State {void turnOn();void turnOff();
}

状态类:

class OnState implements State{@Overridepublic void turnOn() {System.out.println("已启用,无需在次启用");}@Overridepublic void turnOff() {System.out.println("禁用");}
}
class OffState implements State{@Overridepublic void turnOn() {System.out.println("启用");}@Overridepublic void turnOff() {System.out.println("已禁用,无需在此禁用");}
}

上下文:


public class StateBulid {private State currentState;public StateBulid() {// 初始状态为关闭currentState = new OffState();}public void setState(State state) {currentState = state;}public void turnOn() {currentState.turnOn();setState(new OnState());}public void turnOff() {currentState.turnOff();setState(new OffState());}
}

测试:

package com.example.demo.designMode.state;public class StateTest {public static void main(String[] args) {StateBulid bulb = new StateBulid();bulb.turnOn();bulb.turnOn();bulb.turnOff();bulb.turnOff();}
}

在这里插入图片描述

http://www.lryc.cn/news/190264.html

相关文章:

  • c/c++--编译指令(预处理之后) #pragma
  • 黑马JVM总结(三十二)
  • 接口自动化测试框架【reudom】
  • 【数据库问题】删除数据库失败,提示:there is 1 other session using the database
  • 【技术干货】如何快速创建商用照明 OEM APP?
  • 阿里云ModelScope 是一个“模型即服务”(MaaS)平台
  • Nodejs内置模块process
  • Vue2 修改了数组哪些方法,为什么
  • 均值滤波算法及例程
  • 拥抱产业发展机遇 兑现5G商业价值
  • Layui合计自定义列
  • Tomcat自启动另一种方法
  • C语言,标志法
  • 适合自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》
  • 软件设计师学习笔记12-数据库的基本概念+数据库的设计过程+概念设计+逻辑设计
  • distcc分布式编译
  • Java面试题-0919
  • WPF列表性能提高技术
  • 掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(2)
  • 【算法优选】 二分查找专题——贰
  • SQL 的优化
  • 华为云云耀云服务器L实例评测|华为云上的CentOS性能监测与调优指南
  • Go If流程控制与快乐路径原则
  • yolov8 strongSORT多目标跟踪工具箱BOXMOT
  • 如何开发一款跑酷游戏?
  • 使用宝塔面板在Linux上搭建网站,并通过内网穿透实现公网访问
  • Unity可视化Shader工具ASE介绍——6、通过例子说明ASE节点的连接方式
  • VUE3基础知识梳理
  • Java架构师缓存通用设计方案
  • 2023年【危险化学品生产单位安全生产管理人员】及危险化学品生产单位安全生产管理人员模拟考试题