设计模式系统回顾(21)状态模式

设计模式大作业绘图系统【六种设计模式+文档】 运用六种设计模式制作的绘图系统,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 阅读详情

其核心就是给每一种状态绑定一种行为
订单例子

public abstract class AbstractOrderState {
    protected OrderContext orderContext;//订单上下文,用来负责状态切换

    public AbstractOrderState(OrderContext orderContext) {
        this.orderContext = orderContext;
    }

    public abstract void payOrder();//待支付状态订单对应的行为:支付

    public abstract void deliver();//已支付状态订单对应的行为:发货

    public abstract void receiveGoods();//已收货状态订单对应的行为:收货
}
//待支付
public class WaitPaidOrderState extends AbstractOrderState {
    public WaitPaidOrderState(OrderContext orderContext) {
        super(orderContext);
    }

    @Override
    public void payOrder() {//相当于待支付的状态绑定了支付行为
        System.out.println("支付成功");
        this.orderContext.setState(this.orderContext.waitDeliver);//切换状态
    }

    @Override
    public void deliver() {//不是待支付状态订单的行为
        System.out.println("对不起,请先付钱");
    }

    @Override
    public void receiveGoods() {//不是待支付状态订单的行为
        System.out.println("对不起,请先付钱");
    }
}
//待发货状态类
public class WaitDeliverOrderState extends AbstractOrderState {
    public WaitDeliverOrderState(OrderContext orderContext) {
        super(orderContext);
    }

    @Override
    public void payOrder() {//不是待发货状态订单的行为
        System.out.println("你已经付过钱了");
    }

    @Override
    public void deliver() {
        System.out.println("商品已发货并送达目的地");
        this.orderContext.setState(this.orderContext.receiveGoods);//切换状态
    }

    @Override
    public void receiveGoods() {//不是待发货状态订单的行为
        System.out.println("请稍等,商品即将发货");
    }
}

//待收货
public class ReceiveGoodsOrderState extends AbstractOrderState{
    public ReceiveGoodsOrderState(OrderContext orderContext) {
        super(orderContext);
    }

    @Override
    public void payOrder() {//不是待收货状态订单的行为
        System.out.println("您已经付过钱啦,不要重复付钱哦");
    }

    @Override
    public void deliver() {//不是待收货状态订单的行为
        System.out.println("商品已发货并送达,请不要重复发货");
    }

    @Override
    public void receiveGoods() {
        System.out.println("用户已收到商品,此次交易结束");
    }
}

public class OrderContext {
    AbstractOrderState waitPaid;//待支付状态
    AbstractOrderState waitDeliver;//待发货状态
    AbstractOrderState receiveGoods;//待收货状态

    AbstractOrderState currState;//当前状态

    public OrderContext() {
        this.waitPaid = new WaitPaidOrderState(this);//初始化待支付状态订单
        this.waitDeliver = new WaitDeliverOrderState(this);//初始化待发货状态订单
        this.receiveGoods = new ReceiveGoodsOrderState(this);//初始化待收货状态订单
        currState = waitPaid;//当前状态,默认待支付
    }

    void setState(AbstractOrderState state){
        this.currState = state;
    }

    public void payOrder(){//支付
        currState.payOrder();
    }


    public void deliver(){//发货
        currState.deliver();
    }

    public void receiveGoods(){//收货
        currState.receiveGoods();
    }
}

public class TestState {
    public static void main(String[] args) {
        OrderContext orderContext = new OrderContext();//创建订单上下文,默认待支付状态
        orderContext.payOrder();//支付,支付完成之后状态自动切换到待发货
        orderContext.deliver();//发货,发货之后状态自动切换到待收货
        orderContext.receiveGoods();//收货
    }
}

状态模式和责任链模式
1.状态模式是对下一个节点了解的,责任链不知道
状态模式和策略模式
1.策略之前相互可以替换,状态不可以
优点:
每个状态都是独立的对象,易于维护
每个状态类职责单一
缺点:
容易类膨胀

设计模式期末作业(要求5个以上的设计模式的模拟系统) 这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:http://mp.blog.youkuaiyun.com/mdeditor/index/78696300 立即下载

相关推荐

LLM推理服务中的SLO感知调度优化实践

在AI服务架构中,服务级别目标(SLO)是衡量服务质量的核心指标,特别是在大型语言模型(LLM)推理场景下。SLO通常涉及TTFT(首token时间)、TPOT(每token生成时间)和端到端延迟等关键维度,这些指标直接影响用户体验和系统效率。传统FCFS调度策略由于缺乏SLO感知能力,在混合负载下往往导致资源利用率低下和SLO达标率骤降。通过引入基于模拟退火的动态调度算法和精准的延迟预测模型,可以实现对不同优先级请求的智能调度,显著提升GPU利用率和SLO达标率。这种技术方案特别适用于需要同时处理实时对话

weixin_42549154的博客 372

系统架构师(十)设计模式

面向对象的23种设计模式:创建型模式、结构型模式、行为型模式

weixin_47203903的博客 765

华为鸿蒙系统也能用!5分钟搞定谷歌三件套安装(附最新APK下载链接)

本文为华为鸿蒙系统用户提供了一份详尽的谷歌三件套(Google Play服务、商店及框架)手动安装指南。文章核心在于无需Root,通过ADB命令获取设备信息,并从可靠来源下载匹配版本的APK,按照正确顺序安装,从而解决海外应用依赖问题,实现5分钟快速部署。

c7d8e9的博客 6526

用设计模式设计一个简易系统

仓库管理系统 1 系统功能要求: 1.1 注册功能 该系统提供注册功能,用户必须先通过注册账号来实现登录。 1.2 登录功能 用户通过输入账号密码实现登录功能,进而对仓库管理系统进行操作和管理。 1.3 货物入库 填写新货物的基本信息,实现对新货物的入库功能。 1.4 货物出库 选择要出库的货物,实现对货物的出库功能以及可删除货物的基本信息。 1.5 货物查询 通过输入货物编号/货物名称...

weixin_44997483的博客 8510

CoaXPress协议入门(1)---- CXP测试套件

CoaXPress (简称CXP)是指一种采用同轴线缆进行互联的相机数据传输标准,主要用于替代之前的Camera Link协议,常见于科学相机、工业相机、医学图像、航空防务等场景。CXP是一个非对称的高速点对点串行传输协议,主要用于传输视频和静态图像,线缆多使用单条或多条同轴电缆。CXP易于集成,可以获得灵活可靠的性能,通过使用标准的同轴线缆,比如RG59 和 RG6规格(推荐使用RG6),并且图像、控制通讯、触发、电源都可以使用同一条线缆。

素手挽剑 9516

《小白入门:无人机电调 ESC 的 PWM 接口特性、主流协议与使用指南》

电调是无人机的 “动力中枢”,其 PWM 接口是入门的基础,而 SBUS、DroneCAN 等协议则代表了更高阶的控制方式。小白学习时,需先掌握 PWM 的基本特性和连接方法,再根据场景选择合适的协议,同时严格遵守使用注意事项(如电源匹配、校准步骤、安全操作)。随着实践深入,逐步理解 “协议差异” 和 “系统协同”,才能让无人机更稳定、安全地飞行。

bother3000的博客 3769

系统设计模式一

今天我要介绍的第一个模式,很多人应该都很熟悉,就是MVC。在大师们的设计模式书籍中都有提及该模式。而我只是要总结一下,在系统设计中的应用。MVC是Model/View/Control的缩写,指的是模型/视图/控制。模型,通常我们指数据模型。视图,我们指的是与用户的交互界面。控制,我们指业务逻辑。最经典的例子是MFC中的Document/View模型。该模型将业务逻辑混合在视

cpsoft的专栏 1775

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 413

北京设计模式学习组BJDP第4次活动(2013.06.16)回顾会纪要

时间:2013.06.16,2~5pm 地点:北京市朝阳区安慧里三区6号楼,爱帮网 主题:用状态模式实现演出服租借计费 参加人:10人 纪要: 1)Context类与State接口下的具体类之间不要有循环依赖,只要Context知道State就够了,State不需要接受整个Context对象,只要接受必要的参数值就好了。 2)良好的设计模式的运用,就好比窈窕

独立匠艺程序员。本土匠艺、中西合璧;编程悟道,心无挂碍。 1653

SerDes系列之如何选择AC耦合电容

交流耦合电容用于隔离PCB互连时的直流分量(Common-mode voltage),同时传递交流分量(Voltage swing),其作用类似于一个高通滤波器,但是,如果电容容值选取不当,使用过程中会产生信号质量问题,典型的应用场景:当包含相同的长串1或0的NRZ数据应用于该高通滤波器时,会发生低频电压跌落,导致低频模式相关抖动(PDJ)。

一只豌豆象的博客 2351

SAP_MM_配额安排_PA认证总结

配额安排是企业进行供应商管理的一种方式。通过配额管理,企业可以与多家供应商保持业务往来,以保证某些紧缺原材料的正常供货。此外,企业也可以通过不同的配额比例,提高供应商优化服务、降低价格的积极性。

java_zhong1990的专栏 1021

常常回顾设计模式

Java常用设计模式 目录 设计模式 1 创建模式 2 设计模式之Factory -工厂模式 2 设计模式之FACTORY METHOD -工厂方法模式 2 设计模式之Builder -建造模式 4 设计模式之PROTOTYPE -原始模型模式 5 设计模式之Singleton -单例模式 6 结构模式 7 设计模式之Adapter -适配器 7 设计模式之Brid...

javaSamBlog 139

SAP Joule Studio 全景解析

摘要:SAP Joule Studio是SAP Build平台中的低代码/专业级复合工作台,用于构建和管理企业专属的Joule智能体与技能。它支持通过拖拽和声明式编排实现跨系统任务自动化,与SAP及第三方系统集成。核心构件包括Agent(智能体)、Skill(技能)、Action(动作)和Project(项目)。Joule Studio强调企业级落地,与SAP Build Process Automation等工具协同,实现从设计到运行的全生命周期管理。典型应用场景包括供应链补货、财务关账和人力服务台自动化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 396

当设计模式遇上 Hooks

一 前言 「设计模式」是一个老生常谈的话题,但更多是集中在面向对象语言领域,如 C++,Java 等。前端领域对于设计模式的探讨热度并不是很高,很多人觉得对于 JavaScript 这种典型的面向过程的语言来说,设计模式的价值很难体现。之前我持有类似的观点,对于设计模式的理解仅停留在概念层面,没有深入去了解其在前端工程中的实践。近期阅读了《 JavaScript 设计模式与开发实践》一书,书中介绍了 15 种常见设计模式和基本的设计原则,以及如何使用 JavaScript 优雅实现并应用于实际工程中。..

数据库技术 279

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java 21 开发技术主题:密封类 (Sealed Classes) 回顾与增强

密封类是 Java 17 中引入的一种新的类与接口类型,其主要目的是限制类的继承层次结构。通过密封类,开发者可以明确指定哪些类或接口可以继承自它,从而增强代码的安全性和可预测性。这一特性特别适用于那些需要严格控制子类行为的场景,如设计模式中的状态模式、策略模式等。

337

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android设计模式系列(0)--开篇

=======================2011-08-26==================================有时候,最难的是坚持;有时候缺少的是信念。=======================2011-08-07==================================从接触设计模式到如今大概4年左右的时间,一直都想有朝一日定要精通,坐于床头,侧望...

dianan1505的博客 151

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

《设计模式之禅》学习笔记

这是一系列博客文章的目录。 这本书(《设计模式之禅》)看得有年头了,这些文章也写了很久了,写到第15章,也没有写完……这个坑已经不打算填了。之所以还要整理这个目录,只能说是强迫症犯了……( ̄▽ ̄)" 不过再翻翻这些文章,还是有些感慨。那个时候还在上学呢,曾经对“设计模式”很膜拜,以为是最高大上的东西。现在看来更多的是前人总结的经验吧,了解一下就可以了,关键是要用的时候“熟能生巧”。那时候也正在...

weixin_30914981的博客 154

研磨设计模式 (陈臣 / 王斌 著)

第1章 设计模式基础(已看)第2章 简单工厂(已看)第3章 外观模式(Facade)(已看)第4章 适配器模式(Adapter) (已看)第5章 单例模式(Singleton)(已看)第6章 工厂方法模式(Factory Method)(已看)第7章 抽象工厂模式(Abstract Factory)(已看)第8章 生成器模式(Builder)(已看)第9章 原型模式(Protot...

void87的博客 307

设计模式_记设计模式研究的开始(0)

记设计模式研究的开始正式工作也将近一个月的时间了,逐渐对公司的负责项目也渐渐的开始上手了,发现其中有很多不好的地方,介于各种原因,也不方便在这里说。当然这也不是重点,重点是我真的理解到了如果采用合适的设计模式对一个项目进行编码,那么对这个项目的后期维护将会有极大方便。 因此,决定对之前设计模式蜻蜓点水般学习进行一个系统的总结,首先将对设计模式进行一个系统的总结,然后对每种设计模式的优点缺点,适用场景

Jason的一片净土 246

设计模式读书笔记与总结系列文章

设计模式读书笔记与总结系列文章目录

hacke2' Blog 3386

2026最新GOF23种设计模式软件设计师复习备考!看这一篇就够了!

设计模式摘要:设计模式是解决特定软件设计问题的定制化方案,描述类与对象的交互方式。GOF23种设计模式分为创建型、结构型和行为型三类,按范围分为类模式和对象模式。本文简要介绍了工厂模式(简单工厂、工厂方法、抽象工厂)、单例模式、建造者模式、原型模式等创建型模式,适配器、桥接、组合、装饰等结构型模式,以及职责链、命令、观察者、策略等行为型模式。每种模式包含定义、结构、示例和优缺点分析,帮助开发者快速回顾或备考软件设计师考试。设计模式通过封装变化、降低耦合提高系统灵活性和可维护性,但需根据场景合理选择,避免过度

2403_87043561的博客 453
上一篇: 设计模式系统回顾(20)备忘录模式
下一篇: 模式系统回顾(22)访问者模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值