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

在这里插入图片描述

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

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

背景

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,排查难度大
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五之

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

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

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

打赏作者

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

抵扣说明:

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

余额充值