设计模式——命令模式实战之WCS概要设计(二)

在这里插入图片描述

命令模式实践之前奏

在上一篇命令模式实践前奏篇中对业务场景进行描述,对业务需求进行了抽象的分析,并简述了第一版的实现。接下来使用设计模式中的思想对硬件控制模块进行重构,目标是达到易扩展,便于维护。

总体设计

也可能算作详细设计吧

基于上一篇的场景和需求的分析,对整个硬件控制过程可以抽象为以下部分:

  1. 读取任务
  2. 识别任务
  3. 转为命令
  4. 下发到硬件
  5. 反馈命令结果
  6. 反馈任务结果

过程中需要记录关键日志以及审计日志。

读取任务

任务获取可以分为两种形式:主动获取被动获取。差异点体现如下:

-主动获取被动获取
特点自主调度
识别自身压力
实现逻辑简单
需要识别自身压力,并反馈到外部

在这里,重构过程中通过被动方式实现,代码对外提供任务读取接口,需要外部业务方实现接口,共WCS内部调度读取。接口代码如下:

public interface TaskPicker {
    public List<Task> take();
}

任务类图如下:
在这里插入图片描述

识别任务

识别任务主要职责是需要根据读取到的任务分配判断有具体哪些硬件来执行,以及任务的相关业务参数,如货物尺寸,位置等。列一下核心字段作用:

字段描述
taskStage任务阶段,可以判断交给什么硬件执行
taskCate任务分类,判断硬件对于此任务执行什么操作

类签名如下:

public class HardwareTask {
    // 任务阶段
    private int taskStage;
	// 任务类型
	private int taskCate;
}

还有其他的字段就是标识任务的业务属性了。类图如下:
在这里插入图片描述

转换命令

读取到任务之后,需要转为硬件可以识别的命令,然后下发给硬件,让硬件执行命令。就像编程一样,写好的程序要想让计算机执行,必须转为计算机可以明白的命令,然后执行。命令类如下:

public class TaskCommand implements Command{
	private String cmd;
	private Function<Result,Boolean> callback;
	private HardwareTask task;
	private Hardware hardware;
	public void execute(){
		hardware.action(cmd,task,callback);
	}
}

代码中是集成了硬件类的,可以对命令直接执行,调用的过程中会将命令以及任务参数下发给硬件,需要异步监听硬件的执行过程然后返回命令状态,最后回调任务回调方法。

callback方法就是,读取任务的时候,直接传进来的回调方法。在回调方法中,业务可以自行选择更新数据库或者缓存等。

整体实现的类结构如下:
在这里插入图片描述

  • Command:是众所周知的,命令的抽象
  • TaskCmd:是具体命令的实现
  • HardwareReciver:是真正连接硬件,下发命令的类,可以理解为硬件服务类
  • Invoker:调用者,可以理解为是收集命令的一个类,命令在这个类中放入队列,等待一条一条被执行。
  • HardwareClient:是硬件和命令的整体调度端,需要完成,硬件的监听,命令的转换,任务的提取等动作的调度。

本文就先简单介绍到这里,下一篇更具体的介绍实现。

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: WCS(World Community Service)是一种全球化的社区服务方案,其核心理念是鼓励全球志愿者们参与当地的服务项目。针对这种方案,如今的社区服务平台 CSDN 也提供了适合全球志愿者们参与服务项目的设计。 首先,CSDN 的设计将用户头像与 WCS 的整体品牌进行结合,使得用户进入 CSDN 的平台时便能认识到 WCS 的品牌形象。其次,CSDN 为 WCS 提供了一个全球性的服务平台,供用户尽快了解全球社区服务项目的相关信息,并广泛宣传 WCS 的理念和服务项目。此外,CSDN 还为 WCS 设计了一个可参与的信息发布系统,使得全球志愿者可以更便捷地加入 WCS 的志愿者团队,参与志愿服务的具体实践。 除此以外,CSDN 还在 WCS 的背景板上加入了我们所熟知的基本信息,如国家、城市、状况等信息,以帮助 WCS 的志愿者们更好地找到适合自己的社区服务项目。同时,CSDN 设计了一个全球性、细分化的机构划分体系,使得志愿者们更容易找到自己所属的志愿团体并与之联系。 最后,CSDN 还针对 WCS 标识设计时考虑到了使用颜色应该遵循社区服务项目的理念,同时在设计中保留了一些传统的社区服务标识,以凸显 WCS 的知名度和重要性。 综上所述,CSDN 的全球社区服务平台对 WCS 的设计具有更加人性化的思路,并将 WCS 的理念融入到平台设计之中,旨在帮助全球志愿者们更好、更便捷地参与社区服务项目,实现全球志愿者互助、成长与进步的共同目标,可以说是一个非常成功的设计。 ### 回答2: wcs 是 WebRTC 架构下的一种流媒体服务器,其目的是用于实现低延迟、高并发的实时音视频通信场景。而 CSDN 是国内知名的 IT 技术社区,为广大程序员以及 IT 从业者提供各类技术交流、知识学习以及职业发展等服务。 针对这两个不同的应用场景,wcs 设计 csdn 可以从多个方面进行考虑和优化,如下所述: 1. 针对高并发访问量,wcs 在服务的设计与实现上应考虑分布式、负载均衡、高可用等特点,以满足 CSDN 的业务需求。 2. 为提高实时音视频通信的稳定性和质量,wcs 应在运维与服务监控上进行深度整合,实时监控服务的运行状态、性能指标等,实现紧急故障处理与及时预警。 3. 在满足 CSDN 业务需求的同时,wcs 也应注重安全问题,对于用户的隐私信息和数据的保护,应设立完善的安全措施和策略。 4. 由于 CSDN 的用户群体集中在 IT 技术领域,wcs 在技术支持和服务上提供更加专业、实用的解决方案和服务经验,以提升用户满意度和忠诚度。 综上所述,wcs 设计 csdn 要考虑到其服务的性能、稳定性、安全性等多方面的问题,以满足 CSDN 各种业务需求和用户期望,进而促进业务的稳健发展和用户关系的深度沉淀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五之

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

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

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

打赏作者

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

抵扣说明:

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

余额充值