每个操作都需要是一个命令吗?

时间:2019-01-14 14:02:50

标签: c# command command-line-arguments command-pattern


我想知道的事情:

在后台段落列表中提供的每个单个操作是否都需要一个命令?单个命令有什么作用?


背景: 我需要编写一个程序,该程序从cmd开始,并对可以作为命令行参数输入的字符串执行操作。您还需要传递要作为CLA执行的操作。 例如:myprogram.exe / es“这是字符串” / ds / rs。 Es =输入字符串,ds =显示字符串,rs =反向字符串。 不必实施撤消/重做。


可能的操作是:

•输入字符串

•显示字符串

•反向字符串

•大写所有字母

•小写所有字母

•大写字母

•小写字母

•消除连续重复项

•向左旋转

•向右旋转

•游程编码

•行程解码

•丢掉第n个字符

•按字符串分割,并先行

•按字符串分割并倒数


我该怎么做/我的处理方式:

经过一些研究,我认识到实现此示例的最佳方法是使用命令模式和责任链。我正在读《四人帮:设计模式》一书。 但是我认为我对这个概念并不完全理解。我知道,使用命令模式有一个:调用程序,接收程序,命令,CommandInterface等。我知道调用程序(这里是我的ProgramHandler.cs类)会生成单个命令,并为它们配备一个接收程序和一个动作。单个Command调用接收方执行操作。接收器是一个称为StringManipulator的类,该类保存用于操纵字符串的所有方法。我的想法还在于,解析器解析CLA并“告知”需要创建命令的ProgramHandler。

(请看看我的第一种设计方法,最后是图片!)

但是:


其他问题:

拥有一个抽象类SimpleCommand来容纳接收者和操作,然后再从SimpleCommand继承具体命令,这不是很多开销吗?

感觉有点不对劲,但另一方面:每个命令都需要一个动作和一个接收器,因此分别给每个具体命令这些字段将违反面向对象编程的“规则”。

这是如何正确设计的?


类图

Class Diagram

感谢您的时间和帮助!

最诚挚的问候!

0 个答案:

没有答案