6

こんにちは私はJava開発者であり、最近はiPhone開発にも取り組み始めています。Javaのコマンドパターンは、iphoneのデリゲートパターンにいくらか似ているか、またはその逆であるのではないかと思っていました。どちらの場合も、他の誰かが担当者のために作業を行っているからです。誰かがこれについて私に教えてもらえますか?

4

1 に答える 1

9

厳密に言えば、それらは補完的ではありますが、異なります。

Command pattern-これは、操作/要求/アクションをオブジェクトとしてカプセル化したものです。操作をオブジェクトとしてカプセル化する一般的な理由は、操作をデリゲートに送信することですが、元に戻るメカニズムを作成したり、監査ログを書き込んだりするなど、コマンドパターンを使用する理由は他にもさまざまです。

Delegate pattern-これは、それをサポートするために、あるオブジェクトの影を別のオブジェクトの後ろに置いています。通常は1対1の関係です。iPhoneでは、ウィンドウにウィンドウデリゲートがある場合があります。ウィンドウは、特定のユーザーアクションに応答する方法をウィンドウデリゲートに要求する場合があります。さまざまなユーザーアクションが自己完結型のオブジェクトである場合、それらはコマンドパターンの例である可能性がありますが、これはウィンドウデリゲートとは別のアイデアです。

私が理解していること(確かに、ごくわずかです)から、Cocoaモデルの委任は、委任者と委任者の間でコマンドオブジェクトを使用しません(ただし、メソッドの呼び出しは、OOでは「メッセージ」と呼ばれることもあります。実際のエンティティ)。

2つのアイデアは補完的であり、しばしば一緒に使用されますが、それらは別々のアイデアです。デリゲートなしのコマンドパターンとコマンドオブジェクトなしのデリゲートを使用できます。


見る:

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 に答える