《设计模式Design Pattern》读书笔记之十四
Command模式
结构
目的
Command对象建立了命令发出者(invoker)与接收者(receiver)之间的联系。从而,invoker不需要知道谁是receiver,它只管向command发出execute()的请求,command自动告诉receiver进行相应的处理。
讨论
1, 如果command需要undo/redo操作,那么需要保存各种状态,可以利用Memento模式;如果是一串undo/redo command,那么需要把这些command连成一个history list,如果这些command在执行后内部状态会改变,那么需要copy到history list,而不是利用reference,这时候可以使用Prototype模式进行copy操作。
2, 如果command很简单,只是简单建立invoker与receiver之间的联系,可以使用template作成通用的command模版。
3, Composite模式可以用于实现MacroCommands(command的集合)。
参考资料
《Design Pattern》 Gang-Of-4 1997