设计模式 - 状态模式、职责链模式

设计模式之(命令+责任链) 命令模式和责任链模式的java代码,先了解这两个模式,才比较清楚这的代码; 立即下载

UML

状态模式职责链模式

区别

我一直无法分析出两者真正的区别是什么,两者确实非常相似,他俩都代表着转移,甚至同一个问题都可以由两者分别完成。所以,我在网上搜了一个分析两者区别的文章,如下:
职责链模式:当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHander对象负责处理它。接收者和发送者都没有对方的明确信息,且链中的对象自己并不知道链的结构,在运行时自动确定。结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用或指针,而不需要保持它所有的候选接受者。这也就大大降低了耦合度了。也就是说,我们可以随时地增加或修改处理一个请求的结构。增强了给对象指派职责的灵活性。

状态模式:状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。状态模式将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。即将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换。这样做的目的是为了消除庞大的条件分支语句。状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。

个人认为,职责链模式与状态模式的最大的不同是设置自己的下一级的问题上,状态模式是在类的设计阶段就定好的,不能在客户端改变,而职责链的下一级是在客户端自己来确定的。这样各有什么优缺点呢?

在类的设计阶段设定(状态模式)的好处是不用客户来确定下一状态,也就减少了客户设置错误的问题,客户也不用知道状态的具体结构,同时存在灵活性差,耦合度高的问题,从上面的例子可以看到,因为作用域的问题,ConStateC一定要写在ConStateB之前,ConStateB一定要写在ConStateA之前,顺序不能乱。而在客户端设定(职责链模式)要求客户对各个类的职责要有所了解,并能正确设置好职责链,并加大设置出错的风险。但是它也比较灵活,也不存在刚才在状态模式中说的耦合和作用域问题。



PHP命令链模式 立即下载

相关推荐

告别密码烦恼:用Windows Server NPS给公司Wi-Fi和有线网加一道MAC地址白名单(附H3C交换机配置)

本文详细介绍了如何利用Windows Server NPS(网络策略服务器)与H3C交换机实现MAC地址白名单认证,为企业Wi-Fi和有线网络提供零密码安全方案。通过配置NPS服务器、网络策略及H3C交换机联调,实现无感知认证体验,降低运维负担,同时满足审计追溯需求。适用于中小企业网络管理,提升安全性与便捷性。

weixin_42535703的博客 367

设计模式之职责链模式和命令模式理解

这个文章写的是笔者自己在学习设计模式中的一些理解。 职责链模式:参考网站 ​​​​​简说设计模式——职责链模式 - JAdam - 博客园 (cnblogs.com) 命令模式:参考网站(9条消息) 设计模式6-命令模式(Command)解析+案例实践+总结_chen-优快云博客_命令模式实例 职责链模式:这个模式的重点和要点在链字上,广泛的发出一个命令,不明确落实到具体对象,但是需要有一个个体来处理。命令在通过一定顺序经过每个人,如果不符合,无法做到,则向下传递。例子有很多:接力,击鼓传花,请假

qq_45851720的博客 354

基于Java的高校校园点餐系统

本文介绍了一个基于Java技术开发的高校校园点餐系统,该系统以B/S结构为基础,采用MySQL作为数据库,实现了一个高效、便捷的在线点餐平台。系统主要面向三类用户:管理员、用户和食堂工作人员,提供包括用户管理、食堂管理、菜单管理、订单管理等在内的多项功能。通过系统的具体测试,验证了其可行性和有效性,为高校师生提供了一个科学化、系统化的点餐服务。高校校园点餐系统的开发和实现,不仅提高了校园餐饮服务的效率和质量,也为师生提供了一个更加便捷的点餐体验。

a632341031的博客 838

命令模式和职责链模式

#include #include #include using namespace std; /* 命令模式和职责链模式 把这两个模式放在一起学习,因为觉得对比起来学习更有效果。 前者是多个命令交付给一个指定的处理者去处理 后者是将一个请求,按链式方式交付给多个执行者,找到其中适合执行的执行者去操作。 命令模式中主要是处理多个命令,通过中间人对命令的整理与修改,最后将命令名单发送给执行

World-wang 885

迈德威视相机调用( 基于 Linux系统+ OpenCV )

迈德威视相机调用( 基于 Linux系统+ OpenCV )前言一、登录迈德威视官网,下载官方SDK二、代码调用与视频帧处理( 基于 OpenCV )总结 前言     此博客记录了迈德威视工业相机在 Linux 系统下的代码调用及其环境配置,通过 OpenCV 对视频帧进行处理。   一、登录迈德威视官网,下载官方SDK      迈德威视官网 : http://www.mindvision.com.cn/     1. 进入官网后,在服务支持中选择软件下载。    2. 选择Linux系统S.

kkkkkk0729的博客 5678

保姆级教程:用Vue3+Element Plus快速搭建Flowable流程定义管理后台界面

本文提供了一份详细的Vue3+Element Plus教程,指导开发者快速搭建Flowable流程定义管理后台界面。从项目初始化、核心页面设计到响应式数据处理,全面覆盖前端开发关键步骤,帮助提升企业级应用开发效率。

weixin_42662293的博客 479

深入理解命令模式、职责链模式、中介者模式

一,命令模式 命令模式用来处理多样化的同类型请求,将不同的请求内容参数化,从而实现请求排队,撤销等一类的操作。贴近的例子,就是晚上出去撸串,每一桌的顾客要求内容都不同,都会由门店小二对内容进行记载,我们甚至都不用知道烧烤师傅是谁,就能完成请求的传递与实现,达到解耦合的作用。下面的代码就是对这个过程的模拟,将请求参数化。但不是凡事遇到这种情况就需要如此去实现,命令模式在于参数操作与撤销,如果只是对...

FYHannnnnn的博客 297

互联网金融项目实战(大数据Hadoop hive)

什么是互联网金融? 互联网金融 --> 信贷(信用贷款) --> 支付宝率先搞了一个信用体系 互联网金融: 在线支付、P2P 银行: 只会锦上添画、不喜欢雪中送炭 银行害怕出现坏账 ( 储户存钱,银行放贷 赚个利息差 ) 银行是可以倒闭的 保险公司不允许倒闭 银行分为:商业银行(自生自灭的)和非商业银行(国家的) 中国工商银行 全球第一大行 招商银行(清朝的一个李鸿章) 中国银行(历史超过 100 年了) 国家政策:希望银行能够扶持中小型企业 p2p:网络借贷平台 民间吸纳贷款 -->

weixin_58276266的博客 1553

软件系统设计-5-状态模式、命令模式

软件系统设计-5-状态模式、命令模式

SpriCoder的博客 1385

在 Windows 上使用 Anaconda 创建 配置 YOLOv8虚拟环境,并更改 pip 源以及以 可编辑模式 安装ultralytics

前往 NVIDIA cuDNN 下载页面,下载与您安装的 CUDA 版本匹配的 cuDNN 版本。:根据您的系统和 CUDA 版本,选择适当的 whl 文件。如下12.7,表示最高可装12.7版本CUDA,与上图中的支持的最高cuda版本一致。,无需重新安装,从而大幅提升开发效率,适用于项目开发、调试或依赖本地未发布的版本时使用,但需确保当前目录包含。:访问 NVIDIA 官方网站,下载与您的显卡和操作系统兼容的 CUDA 版本。首先,确保NVIDIA 显卡支持 CUDA,并安装相应版本的驱动程序。

weixin_44115575的博客 1893

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3101

命令和职责链模式的快速实现 commons chain

commons chain 是命令与职责链模式的经典实现 commons chain 基本概念 它有如下概念: Context Command Chain Filter Catalog 1) Context 上下文 Context 表示一个应用程序的状态, 它其实是一个 java.util.map 的标记接口, 上下文是类似一个信封, 包含了完成一个事务所需的属性, 换句话说,...

温故而知新 495

从零到多智能体:Google Agent开发套件(ADK)入门指南

ADK促进自定义工具生产的能力是其优势之一。本质上,工具只是一个带有描述性文档字符串的Python函数。

独立开发,substack顶级编辑 2491

设计模式 状态模式与职责链模式

状态模式 状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 #include <iostream> #include <string> #include <vector> using namespace std; class War; class State { public: .

weixin_45413328的博客 230

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

设计模式-行为型-常用-2:职责链模式、状态模式、迭代器模式

学习过程中的总结

lyk1184919379的博客 1564

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

设计模式:11-状态模式 / 策略模式 / 职责链模式

文章目录22. 状态模式(State Pattern)22.1 需求的引入22.2 基本介绍22.3 应用实例22.4 状态模式的注意事项和细节23. 策略模式 (strategy pattern)23.1 需求的引入23.2 基本介绍23.3 应用实例23.4 策略模式在 JDK-ArrayList 应用的源码分析23.5 策略模式的注意事项和细节23. 职责链模式 (Chain of Resp...

JinglongSource的博客 494

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java设计模式(十)—状态模式、策略模式、职责链模式

本章目录标题第24章 状态模式24.1 应用场景:APP抽奖24.2 状态模式24.3 应用案例:APP抽奖14.4 状态模式的注意事项 第24章 状态模式 24.1 应用场景:APP抽奖 请编写程序完成 APP 抽奖活动 具体要求如下: (1)假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10% (2)奖品数量固定,抽完就不能抽奖 (3)活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完 4) 活动的四个状态转换关系图 24.2 状态模式 基本介绍 (1)状态模式(State Pat

qq_37965402的博客 947

状态模式、职责链模式、组合模式--三个例子(大话设计模式考)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33841722的博客 340

(13)设计模式之状态模式与职责链模式、策略模式的对比

状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 本质:根据状态来分离和选择行为。实现了状态逻辑和动态实现的分离。就举个例子来说明该模式的作用: 当快到期末考试周了,你(实际上是我)还有一堆科门没复习完,你要整天的复习,但是你的学习状态会根据每天的时间段的不同而变化,要求根据不同的时间段输出对应时间段的状态。什么嘛,这简单到掉牙了啊,啊sir,有没有搞错啊。 你看,写完了吧确实可以,但是如果当我们给每天定制了一个任务,规定完成不了任务就要一直学。又或者今天晚上6点要和女朋友

m0_55759099的博客 306

Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)

Java设计模式Ⅶ1.备忘录模式1.1 备忘录模式概述1.2 代码理解2.解释器模式2.1 解释器模式概述3.状态模式3.1 状态模式概述3.2 代码理解4.策略模式4.1 策略模式概述4.2 代码理解5.职责链模式5.1 职责链模式概述5.2 代码理解 1.备忘录模式 1.1 备忘录模式概述 (1)基本介绍 ①备忘录(Memento)模式在不破坏封装性的前提下,捕获一个对象的 内部状态。并在该对象之外保存这个状态,这样以后就可将该对象恢 复到原先保存的状态 ②理解备忘录模式: 现实中的备忘录是要用来

m0_46212244的博客 229

与状态模式相似的设计模式---职责链模式

今天我们要讨论的设计模式与前面提到的状态模式非常相似,他们不能的地方:状态模式是每个具体的状态处理自己状态的事务,若非自己状态处理的数据则将状态移动到一下一个具体状态类处理;而职责链则是根据自己的职责完成本职工作,若不能完成则判断是否已经关联了下一个环节职责,若存在则调用下一环节的处理。他们两个一个是在具体类中已经设定了下一环节,而另外一个则是在客户端先设定好职责链。       什么是职责链模

岁月沉淀,积累财富 664

Java设计模式(十七)行为型- 状态模式State Pattern(史上最全职责链模式)与使用场景以及优缺点

状态模式

移动端开发与最新技术 386

职责链模式VS状态模式

今天来进行其他两个模式的对决,1号选手职责链模式,2号选手状态模式。开始对决:职责链模式VS状态模式。 首先来看看1号选手职责链模式的简介,它的定义为:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一对象处理它为止。它的UML图如下: 下面来看看1号选手职责链模式的好处: 当客户

ljianhui的专栏 7661

职责链模式--状态模式--策略模式

一、职责链模式 使每一个对象都有机会处理请求,避免请求的发送方和接受方的耦合。使任务沿着一条链传递,最终有人处理它。 优点: 请求者和接收者松耦合。 动态组合职责。 缺点: 会产生很多细粒度对象。 请求不一定被处理。 需要默认处理方法。 过于灵活,在使用它时需要确定下一个对象是谁。 本质是分离职责,动态耦合。 与状态模式的对比,状态模式是一个对象内在状态发生变化,相对稳定,而...

lanshan1111的博客 429

C++设计模式整理012-职责链模式、观察者模式、状态模式

目录 18. 职责链模式 18.1 实例2 19. 观察者模式 19.1 示例2 20. 状态模式 18. 职责链模式 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所有职责链将请求的发送者和请求的处理者解耦了。 /* * 关键代码:Handler...

星月相随的专栏 229

个人重构——职责链模式PK状态模式

背景:在上一篇博客《个人重构——职责链模式》中就对重构中用到的模式进行总结,可是在前两天的师父验收系统中,当让我自己对职责链模式描述时,师父竟说,听着怎么跟状态模式类似啊!于是,才有了这篇博客的诞生。         1·自我理解: 职责链模式:一个事物的所处状态依靠另外一系列的事物处理后返回的结果。 状态模式:一个事物本身的行为根据状态变化而变化。 共同点:减少使用复杂的条件逻辑判断,吧

keep innocent 1307
上一篇: Android - 编译相关
下一篇: Android - adb
G机器猫
博客等级 码龄16年 106粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值