设计模式——命令模式实战之前奏(一)

设计模式-命令模式实战之WCS核心控制重构(四) 基于命令模式实现的硬件控制框架,解决命令的可靠执行和顺序执行,以及横向扩展等 阅读详情

在这里插入图片描述

设计模式中的命令模式属于行为模式,命令模式的本质是 “将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。”

本系列文章会基于实践场景进行抽象,然后重构,并分析每次代码架构升级的目标以及带来的利弊。

背景

WCS,仓库控制系统,主要任务就是接受WMS产生的任务,然后下发给相关的硬件,让硬件在仓库内执行命令。主要就是出入库等之类的任务。系统的控制流转图,如下:
在这里插入图片描述

需求

非行业内的同学,可能仓库内的操作流程不熟悉,简单对库内的整体流程进行了抽象了一下,如图:
在这里插入图片描述
图中的橙色部分为WMS能力,绿色部分为WCS能力。

WCS需求

WMS为已有系统,也不在本次实践范围内,不过多介绍。重点分析一下WCS的核心逻辑。把WCS的核心逻辑进行抽象后,如图:
在这里插入图片描述

在实际业务场景中还需要关注硬件的健康状态,工作线程的健康状态

  1. WCS主动监听是否有任务
  2. 如果发现有任务就读取任务
  3. 将读取到的任务转换为硬件执行命令,具体的任务和命令数据结构就不多描述了偏向于业务了
  4. 反馈任务执行状态给WMS

第一版实现的代码逻辑,比较简单粗暴,核心类如下:

public abstract class HardwareMasterRunnable implements Runnable{} 
public abstract class HardwareRunnable implements Runnable{} 
public class HardwareServer{}
public class HardwareProtocol{}
public abstract class StackerCallable implements Callable<Boolean>{}

HardwareMasterRunnable: 异步执行的抽象,负责周期性的调度不同硬件的线程。
HardwareRunnable: 硬件线程抽象类,负责控制硬件的工作。
HardwareServer: 负责硬件的控制,命令的执行以及状态的抓取。
HardwareProtocol: 负责硬件之间的任务衔接,自动执行下一条命令。
HardwareCallable: 硬件命令执行抽象线程,需要异步获取返回值。

通过这几个类实现了出版的硬件控制,命令执行结果获取,硬件状态监听。

实现分析

第一版的实现是跟着业务的任务流,以及命令流,一站到底的实现的。中间对于异步进行了一定的关注。这种代码遇到需求或者流程的变动,需要深入代码过程去修改调整。

优势

要说优势的话,可能就是对开发人员要求不高,会点线程,明白业务流,会看硬件接口就行。

缺点
  1. 代码平铺之下,维护难度高
  2. 不容易扩展,有需求改动,需要完全了解代码
  3. 出现BUG,排查难度大
设计模式——命令模式实战之WCS概要设计(二) WCS中的硬件控制概要设计 阅读详情

相关推荐

最新小旋风蜘蛛池X6.21解密版+绕过授权带教程

介绍: 1.站群管理:用你的域名在这里添加网站 2.站点优化:站点互链,内容优化 2.系统设置:开启蜘蛛池 3.采集管理(可开启自动采集) 4.缓存设置:推荐开启tkd缓存 其他的用户根据自己的实际情况后台进行配置,通常以下: 1.后台首页(这里显示系统的大致概况) 2.系统设置:蜘蛛池的基本设置(访问开关、跳转、统计等等) 3.站群管理: 1.网站管理(用你的域名在这里添加网站) 2.模型管理(可构建不同类型站点:电影、文章、论坛等等) 3.TKDB调用模板(即:title、keywords、descri

百度SEO程序下载 2937

仓库控制系统(WCS)设计模式-命令模式

最近在琢磨怎么优化现有的 WCS(仓库控制系统)。主要想达到这么几个效果:用户能直接在拖拽操作界面,把物料的流转路径配置好;选中某一段路径,系统就能自动生成对应的任务模板;等要创建具体任务的时候,选个模板就行,系统会照着模板生成任务;最后,任务排队、调度,统一由WCS 来调度管理。趁着现在系统里已经有了一些实现,简单介绍一下开发过程中用到的几个设计模式。

xiabeiying的博客 765

避开这些坑!用Python ReportLab生成PDF时字体处理与中文排版的5个关键技巧

本文针对Python ReportLab库在PDF自动化生成中常见的中文排版难题,提供了五个关键技巧。内容涵盖字体注册的稳健策略、段落样式的精细控制、表格内中文的换行对齐、页面布局管理以及性能优化,旨在帮助开发者彻底解决中文乱码、排版错位等问题,生成专业美观的PDF文档。

weixin_29250403的博客 624

行为型模式之命令模式

行为型模式之命令模式

奔走的王木木Sir的博客 1092

数据库实验报告--MySQL

数据库完整版报告--MySQL 包括数据库创建、表的创建、视图以及授权和触发器的创建等内容,全是精华!看完点赞加收藏O(∩_∩)O~。

Mortalz7 4924

C#开发者必备:VSPD虚拟串口快速配置指南(附汉化教程)

本文为C#开发者提供了VSPD虚拟串口的快速配置与汉化教程。详细介绍了如何安装、汉化VSPD,并创建稳定的虚拟串口对,重点讲解了如何将其集成到C#开发工作流中,使用SerialPort类进行数据通信测试、协议模拟及故障排查,有效提升硬件通信开发的效率。

weixin_29224529的博客 258

1.设计模式之前奏

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式   其实还

理想 国 388

GD32F303开发实战(一):从零搭建MDK工程与时钟配置详解

本文详细介绍了如何从零开始为GD32F303微控制器搭建一个清晰、可维护的MDK工程模板。内容涵盖开发环境准备、工程目录结构规划、文件分组管理、关键工程配置,并重点解析了时钟树原理,手把手指导配置108MHz系统时钟。通过实战步骤与常见问题排查,帮助开发者构建一个稳定可靠的开发基础,便于后续功能扩展。

weixin_29174141的博客 272

设计模式前奏之什么是设计模式?

设计模式一词来源于建筑行业,简单说就是解决建筑行业不同问题的一些模板。按照这些模板设计的建筑更有规划,更受到人们的喜爱。 由"F4"(Gang of four,GoF)引申到软件行业,归纳总结了23种使用频率大,或者最利于软件工程师解决编程过程中经常遇到的那些难题的编程模式就是软件设计中的设计模式了。 狭义设计模式共23种(这23种最常用,最通用),以这23种模式或者说解决方案解决我们编程中经

wjw的博客 397

RAG面试内容整理-8. 文档分块策略(滑动窗口、语义切分)

RAG系统通常面对长文档或整篇知识库资料的检索需求,但大模型一次处理的文本长度有限,向量索引也需固定大小的文本片段。因此,将长文档拆分成合适片段是必不可少的步骤,被称为文档分块(chunking)策略。

不务正业的猿 691

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

Command Pattern(命令模式)

Command Pattern(命令模式) 定义: 将一个请求封装成一个对象,因此可以参数化多个客户的不同请求,将请求排队,记录请求日志,并且支持撤销操作。(来自:《深入浅出设计模式》莫勇腾)     应用情景: 当你需要与动作有关的对象来作为参数。 你需要在不同的时间创建请求,生成请求队列,执行请求。 你需要支持取消、保存修改日志或处理事务(事务包括大量修改的数据)功能。 你...

天地下最神奇的地方 195

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

命令模式

前奏: 烤肉摊只有一个老板一个人照顾,人太多,场面混乱,先后等不到保证,烤肉质量也容易下降。大家都盯着烤肉。这其实就是“行为请求者”与“行为实现者”的紧耦合。 若有人退回请求或者要求烤肉重烤,者相当于撤销和重做。所以对请求排队或记录请求日志,以及支持可撤销的操作等行为。 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或...

weixin_30808253的博客 68

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JS进阶课程JavaScript高级与设计模式精讲课程

课程收获 1.深层次理解JavaScript的内部运行机制; 2.掌握面向过程转面向对象进行中大型项目实战能力; 3.了解并能熟练吧一些常用设计模式运用 于项目开发中; 4.能自己封装小型框架,看懂其他前端框架的底层实现。 适用人群 已完成JavaScript基础学习的人; 要深入js面向对象和设计模式; 为后期中大型项目开发铺垫。 课程目录 │ JavaScript高级+项目实战.rar ...

di_pingxian的博客 399

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

行为型另一重点策略模式

行为型模式中的策略模式讲解

奔走的王木木Sir的博客 1071

RUP与设计模式

前奏刚学习了UML,那么RUP是什么呢?设计模式又是什么呢? 其实就是为了更有效地使用UML的一种指导方法。 设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 下面我们就简单了解一下RUP以及设计模式。RUP1. 概念:面向对象的软件开发过程 2. 目标:是能够在预定的进度和预算中,提供高质量的、满足最终用户需求的软件 3. RUP提供了开发机构中分派任务和责任

像风走过八千里 833

JavaScript高级进阶设计模式精讲系列视频教程

课程目录 第1章面向对象-体系精讲(前奏)3小时38分钟16节 1-1面向对象-基本类型和复杂类型[免费试看] 1-2面向对象-类型和运算符 1-3面向对象-变量和函数作用域 1-4面向对象-异常处理 1-5面向对象-对象回顾 1-6面向对象-对象演变 1-7面向对象-对象优化 1-8面向对象-进一步抽象 1-9面向对象-三大特性 1-10面向对象-计算器 1-11面向对象-矩形-上 1-12面向对象-矩形-下 1-1...

m0_63304449的博客 1264

0.设计模式导航

最近这段时间主要是写设计模式,因为本人也是初学,本着和大家切磋交流的虔诚之心, 文中难免有偏颇之处 希望大家可以批评指正,共同进步,最终助我进步。   我觉得设计模式可能更偏重于思想,可能在代码的实现上会各有不同,如果你在开发中 利用了框架又会有所不同,当然框架本身也会利用到了各种了模式,如果我们可以掌握 设计模式,一方面在解决问题时候会多有一种思路也会让自己的代码显得更加优雅,另...

理想 国 136

撩课JavaScript高级与设计模式精讲课程

课程目录 第1章面向对象-体系精讲(前奏)3小时38分钟16节 1-1面向对象-基本类型和复杂类型[免费试看]12:29 1-2面向对象-类型和运算符13:57 1-3面向对象-变量和函数作用域08:42 1-4面向对象-异常处理13:44 1-5面向对象-对象回顾13:51 1-6面向对象-对象演变11:50 1-7面向对象-对象优化10:35 1-8面向对象-进一步抽象12:55 1-9面向对...

m0_46238308的博客 203

国庆假期带你玩转设计模式之模板方法模式

行为型模式之模板方法模式

奔走的王木木Sir的博客 571

访问者模式你了解了吗?

行为型模式中的访问者模式

奔走的王木木Sir的博客 899

此“备忘录”和彼备忘录一样吗?

行为型模式之备忘录模式

奔走的王木木Sir的博客 1601

最后一个行为型模式:解释器

行为型模式之解释器模式

奔走的王木木Sir的博客 2164

迭代器模式讲解

行为型模式之迭代器模式讲解

奔走的王木木Sir的博客 1167
上一篇: 仓配行业术语
下一篇: 设计模式——命令模式实战之WCS概要设计(二)
五之
博客等级 码龄15年 257粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五之

真实案例以及商业项目技术

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值