我对这种模式很陌生...
问问题
753 次
3 回答
6
如果你有 lambda,你真的不需要一半的“设计”“模式”。
工厂?这只是一个返回新对象的函数。游客?呸!命令?匿名函数。翻译?接受字符串或其他内容的函数。战略?这是一个功能!
那只是 lambdas、函数和闭包。
所以是的,您可以在使用命令模式的地方使用匿名(或以其他方式命名)函数。
于 2009-06-15T10:46:24.127 回答
3
如果您的命令仅支持一项操作,您可以安全地使用匿名函数。
但是,每个命令都有多个操作并不少见。例如 DoCommand/UndoCommand 用于撤销/重做处理。或 CanExecuteCommand/ExecuteCommand 启用/禁用命令的 UI 功能。或者像 GetLocalizedCommandName 这样的东西。在这些情况下,我会使用接口(而不是匿名函数的元组)。
于 2009-06-15T10:52:44.707 回答
0
我会说不,因为函数不能真正封装命令的细节,如果它是匿名的,调用者和被调用者如何理解它所代表的内容?
(如果想学究气,GoF 对 Copmmand 模式的描述专门描述了使用对象进行封装,排除了基于函数的实现,尽管那会是挑剔的)。
于 2009-06-15T10:48:01.050 回答