6

嗨,我是一名 java 开发人员,这些天我也开始从事 iphone 开发工作。我想知道 Java 的命令模式与 iphone 中的委托模式有些相似,反之亦然,因为在两者中都有其他人在为受让人工作。有人可以启发我吗?

4

1 回答 1

9

严格来说,它们是不同的,虽然是互补的。

Command pattern- 这是一个操作/请求/动作作为对象的封装。尽管将操作封装为对象的常见原因是将其发送给委托人,但您可能还需要使用命令模式的各种其他原因,例如创建撤消机制或编写审计日志。

Delegate pattern- 这是一个物体阴影在另一个物体后面以支持它。它通常是一对一的关系。在 iPhone 中,一个窗口可能有一个窗口委托。窗口可能会询问窗口委托如何响应某些用户操作。如果不同的用户操作是自包含的对象,那么它们可能是命令模式的一个示例,但这是与 Window 委托不同的想法。

据我了解(诚然,很少),Cocoa 模型中的委托不使用委托者和被委托者之间的命令对象(尽管方法调用有时在 OO 上被称为“消息”,就好像它是一个实际实体)。

这两个想法是互补的,经常一起使用,但它们是不同的想法。您可以使用不带委托的命令模式和不带命令对象的委托。


看:

http://en.wikipedia.org/wiki/Command_pattern

http://en.wikipedia.org/wiki/Delegation_pattern

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18

于 2010-12-23T06:01:10.047 回答