我为数据库中的每个用户存储了可自定义的控件设置。 现在我正在加载控件设置,如下所示:
some possible user input (eg. ctrl + s) => some command (eg. save file)
现在我有一个基于数据库信息在运行时生成的哈希/字典。
哈希的key
是用户的输入,而value
是激活命令所需的。{/ p>
由于这是一个面向命令的接口,因此该值需要允许我实例化一个新的命令对象,例如,该值可能是一个工厂。
问题在于我对每个命令都有一个工厂的概念感到气馁,因为它有很多几十个命令,因此听起来有点矫枉过正。
我想知道是否有更简洁的方法来设置面向命令的界面。
我正在使用Haxe,但这是一个普遍的oop /设计模式问题。
答案 0 :(得分:1)
您可以使用命令处理器注册命令,然后处理器会依次询问每个命令以响应输入。如果命令响应,则处理器工作完成;如果没有,它会询问chain中的下一个命令。
或者,对于字符串输入与命令的简单匹配,处理器可以将字符串输入的映射(或哈希表)保存到命令实例。
这一切都预先假定您的命令已经实例化并且是处理器保留的集合的一部分,因此它们也应该在调用之间重用。