我想知道的事情:
在后台段落列表中提供的每个单个操作是否都需要一个命令?单个命令有什么作用?
背景: 我需要编写一个程序,该程序从cmd开始,并对可以作为命令行参数输入的字符串执行操作。您还需要传递要作为CLA执行的操作。 例如:myprogram.exe / es“这是字符串” / ds / rs。 Es =输入字符串,ds =显示字符串,rs =反向字符串。 不必实施撤消/重做。
可能的操作是:
•输入字符串
•显示字符串
•反向字符串
•大写所有字母
•小写所有字母
•大写字母
•小写字母
•消除连续重复项
•向左旋转
•向右旋转
•游程编码
•行程解码
•丢掉第n个字符
•按字符串分割,并先行
•按字符串分割并倒数
我该怎么做/我的处理方式:
经过一些研究,我认识到实现此示例的最佳方法是使用命令模式和责任链。我正在读《四人帮:设计模式》一书。 但是我认为我对这个概念并不完全理解。我知道,使用命令模式有一个:调用程序,接收程序,命令,CommandInterface等。我知道调用程序(这里是我的ProgramHandler.cs类)会生成单个命令,并为它们配备一个接收程序和一个动作。单个Command调用接收方执行操作。接收器是一个称为StringManipulator的类,该类保存用于操纵字符串的所有方法。我的想法还在于,解析器解析CLA并“告知”需要创建命令的ProgramHandler。
(请看看我的第一种设计方法,最后是图片!)
但是:
其他问题:
拥有一个抽象类SimpleCommand来容纳接收者和操作,然后再从SimpleCommand继承具体命令,这不是很多开销吗?
感觉有点不对劲,但另一方面:每个命令都需要一个动作和一个接收器,因此分别给每个具体命令这些字段将违反面向对象编程的“规则”。
这是如何正确设计的?
类图
感谢您的时间和帮助!
最诚挚的问候!