我对这种模式很陌生......
答案 0 :(得分:5)
如果你有lambdas,你根本不需要一半“设计”“模式”。
厂?这只是一个返回新对象的函数。游客?咄!命令?匿名功能。翻译吗?需要字符串或其他功能。战略?这是一个功能!
那只是lambdas,函数和闭包。
所以,是的,您可以使用匿名(或其他名称)函数,您可以使用命令模式。
答案 1 :(得分:2)
如果您的命令仅支持一个操作,则可以安全地使用匿名函数。
但是,每个命令都有多个操作并不罕见。例如。用于撤消/重做处理的DoCommand / UndoCommand。或者CanExecuteCommand / ExecuteCommand为命令启用/禁用UI功能。或者类似于GetLocalizedCommandName。在这些情况下我会使用接口(而不是例如匿名函数的元组)。
答案 2 :(得分:0)
我会说不,基于一个函数无法真正封装命令的细节,如果它是匿名的,调用者和被调用者如何理解它代表什么?
(如果一个人想要迂腐,那么Copmmand模式的GoF描述专门描述了使用一个对象进行封闭,预先设置了一个基于函数的实现,虽然那将是挑剔)。