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.hqwc.cn/news/133558.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过 NFTScan API 按照 NFT 合约地址检索数据?

在当前 NFT 市场还在不断扩张的背景下,各种 NFT 项目依旧是井喷式涌现,投资者和开发者都面临获取项目全貌数据的困境。公链上提取和处理大量的数据既费时又费力,缺乏全面的信息支持,将难以深入判断一个 NFT 项目的真实情况&#x…

解决Win10电脑无线网卡的移动热点无法开启问题

一、目的 利用无线网卡连接网络,然后又用无线网卡通过移动热点分享该网络。 移动热点,简单地说,就是将台式机或笔记本的 Internet 连接转化成 WIFI 信号以供移动设备无线上网的功能,硬件前提是电脑须安装有无线网卡。 二、问题 …

Java架构师系统架构设计确定系统边界

目录 2 初始业务场景分析2.1 业务的需求分析重要性2.2 全面深入的理解业务从零到一从无到有2.3 需求分析 3 系统和系统边界定义3.1 为什么要确定系统边界 3 需求分析明确系统边界4 高层架构设计4.1 技术架构4.2 部署架构4.3 安全架构4.4 存储架构 5 高层架构设计确定系统边界5.…

vscode中注释多行bash脚本

选择你要注释的行,右击所选的行,从命令调色板中选择添加行注释。 选择后,所选的行将被注释为#,如下图所示。 选择你想取消注释的行,在所选行上点击右键,从命令调色板中选择删除区块注释,就可以从…

01-10 周二 PyCharm远程Linux服务器配置进行端点调试

01-10 周二 PyCharm远程Linux服务器配置 时间版本修改人描述2023年1月10日14:04:15V0.1宋全恒新建文档2023年2月6日11:03:45V0.2宋全恒添加快捷指令别名的实现方便虚拟环境的切换 简介 使用 PyCharm,您可以使用位于另一台计算机(服务器)上的解释器调试应用程序。 …

蜘蛛飞机大战

欢迎来到程序小院 蜘蛛飞机大战 玩法: 点击开始游戏,鼠标移动控制方向,可自由移动飞机打剁掉方飞机下落的子弹并打掉敌方飞机,三次生命,不同关卡不同奖励,快去闯关吧^^。开始游戏https://www.ormcc.com/pl…

为什么手机会莫名多出许多软件?

许多手机用户都曾遭遇过这样的问题,他们在使用手机的过程中,突然发现手机屏幕上出现了一些未知的软件。这些软件并非他们主动下载的,但它们却显现在屏幕上。这些软件从何而来? 其实,这些软件往往是在浏览网页、阅读小…

安装JAVA 依赖环境 Maven 教程

一、下载链接与Tips Maven 过去版本下载传送门:( Java 8 兼容 Java 7,即 Java 8 的 JDK 能运行 3.8.8 以下的 Maven) Maven Releases History Download 点击 release notes 点击 available for download. 选择 bin 的安装包 然…

交叉熵Loss多分类问题实战(手写数字)

1、import所需要的torch库和包 2、加载mnist手写数字数据集,划分训练集和测试集,转化数据格式,batch_size设置为200 3、定义三层线性网络参数w,b,设置求导信息 4、初始化参数,这一步比较关键,…

distcc分布式编译

distcc https://gitee.com/bison-fork/distcc.git 下载工具链 mingw,https://www.mingw-w64.org/downloads/#w64devkitperl,https://strawberryperl.com/releases.html免安装zip版本,autoconf等脚本依赖perlautoconf、automake&#xff0c…

使用wireshark解析ipsec esp包

Ipsec esp包就是ipsec通过ike协议协商好后建立的通信隧道使用的加密包,该加密包里面就是用户的数据,比如通过的语音等。 那么如何将抓出来的esp包解析出来看呢? 获取相关的esp的key信息. 打开wireshark -> edit->preferences 找到pr…

线程入门java

1:线程创建方式二 让子类继承Thead类 必须重写Thead类的run方法 写多态的写法 注意优缺点 线程已经Thread 无法继承其他类 package threadTest;public class ThreadTest1 {//目标:掌握线程的创建方式继承thread类public static void main(String[] …