将参数传递给命令模式
Passing arguments to command pattern
好的,通常当我使用命令模式时,我会通过构造函数传入参数。 但是,我目前的设计并不允许这样做。 原因是我在启动时从 xml 文件加载数据,所以我可能有这样的东西:
<Actor>
<InputComponent>
<Mapping Type="Drag" Key=1 Command="MoveCommand"/>
<Mapping Type="Press" Key=16 Command="FillerCommand"/>
<Mapping Type="Click" Key=2 Command="FillerCommand"/>
</InputComponent>
</Actor>
因为它们是作为字符串读入的,所以它们被传递给命令工厂对象,然后该对象创建正确的命令对象并将 em 交回给输入组件。 这意味着我无法访问它们,因为它们是构造的,因此无法通过构造函数指定特殊参数。 我可以通过一个 void 指针将这些额外的信息传递给 Execute 成员函数,但这非常不安全。 我还可以将 XML 元素传递给命令工厂,并让他们从进一步的 xml 属性(当前方法)初始化自己,但它仍然感觉像一个黑客解决方案。 欢迎任何建议。
在运行时执行此操作的唯一方法是在调用时统一传递参数,您可以使用
std::unordered_map<std::string, boost::any>
或类似于单个参数。每个参数都有一个名称,您必须any
转换为原始类型。
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 命令模式 - 使用"weight"执行任务的命令
- 命令模式:如何进行连续操作?(例如,移动对象)
- 如何创建一个可以在GUI对话模式下或通过命令行启动的C MFC程序
- 将命令模式,工厂模式和模板混合在一起..
- qmake-run命令仅在调试模式下运行
- 撤消/重做的命令模式:何时不合并撤消命令
- C++:模式:哪种模式适合特定的代码执行,具体取决于命令行参数
- 在调试模式下运行时,VS2012中的命令参数错误
- 将参数传递给命令模式
- 命令模式队列按时间排序
- 如果命令不只是打印结果,而是进入某种交互模式,如何处理来自C++的终端命令执行的输出?
- C++中的命令模式
- 可以从命令行运行C++代码,但不能从visual studio中的调试模式运行
- 简单的OpenCV命令可以在调试模式下工作,但不能在发布模式下工作
- 使用命令模式进行内存管理
- 命令模式:在哪里创建命令项
- 命令设计模式的实现存在一些错误