c# - 每个操作都需要是一个命令吗?
问题描述
我想知道的:
背景段落中列表中提供的每个操作是否都需要是单个命令?单个命令有什么作用?
背景: 我需要编写一个从 cmd 启动的程序,并对可以作为参数输入到命令行的字符串执行操作。您还需要将要作为 CLA 执行的操作传递。例如: myprogram.exe /es "This is the string" /ds /rs 。Es = 输入字符串,ds = 显示字符串,rs= 反向字符串。没有必要实施撤消/重做。
可能的操作是:
• 输入字符串
• 显示字符串
• 反转字符串
• 大写所有字母
• 小写所有字母
• 特定大写字母
• 小写特定字母
• 消除连续重复
• 向左旋转
• 右旋
• 游程编码
• 游程解码
• 删除每第 n 个字符
• 按字符串拆分并优先获取
• 按字符串拆分并取最后
我做了什么/我的方法是什么:
经过一些研究,我认识到实现这个示例的最佳方式是使用命令模式和责任链。我正在阅读四人帮写的书:设计模式。但我认为我不完全理解这个概念。我知道,使用命令模式有:调用者、接收者、命令、命令接口等。我知道调用者(这里是我的 ProgramHandler.cs 类)生成单个命令,为它们配备接收器和操作。并且单个命令调用接收器来执行操作。接收器是一个名为 StringManipulator 的类,它包含操作字符串的所有方法。我的想法也是,解析器解析 CLA 并“告诉” ProgramHandler 需要创建哪些命令。
(请看我的第一个设计方法,图片在最后!)
但:
附加问题:
拥有一个包含接收器和动作的抽象类 SimpleCommand 以及之后从 SimpleCommand 继承的具体命令,这不是相当多的开销吗?
感觉有点不对,但另一方面:每个命令都需要一个动作和一个接收者,因此分别给每个具体命令提供这些字段将违反面向对象编程的“规则”。
这是如何正确设计的?
类图
感谢您的时间和帮助!
此致!
解决方案
推荐阅读
- python - re.search() 只回馈 2 组,但应该回馈 5
- python - 查找列表中三个和的数量
- python - 从调用的 Python 代码向 UiPath Studio 序列返回参数
- node.js - 如何在 Node.js 源代码中运行测试?
- azure-cosmosdb - mongodump 停止而不转储每条记录
- c++ - 使用新参数第二次调用矩形绘图功能时出现问题
- ruby-on-rails - 如何使用 fields_for 从一个表单链接多个模型?
- php - 使用 Web 服务可以使用的参数设置 url
- mongodb - MongoDB 语法错误:聚合和组的正确语法是什么?
- python - 在 R 环境中部署 Amazon sagemaker 生成的 XGBoost 模型