こんにちは私はJava開発者であり、最近はiPhone開発にも取り組み始めています。Javaのコマンドパターンは、iphoneのデリゲートパターンにいくらか似ているか、またはその逆であるのではないかと思っていました。どちらの場合も、他の誰かが担当者のために作業を行っているからです。誰かがこれについて私に教えてもらえますか?
1 に答える
厳密に言えば、それらは補完的ではありますが、異なります。
Command pattern
-これは、操作/要求/アクションをオブジェクトとしてカプセル化したものです。操作をオブジェクトとしてカプセル化する一般的な理由は、操作をデリゲートに送信することですが、元に戻るメカニズムを作成したり、監査ログを書き込んだりするなど、コマンドパターンを使用する理由は他にもさまざまです。
Delegate pattern
-これは、それをサポートするために、あるオブジェクトの影を別のオブジェクトの後ろに置いています。通常は1対1の関係です。iPhoneでは、ウィンドウにウィンドウデリゲートがある場合があります。ウィンドウは、特定のユーザーアクションに応答する方法をウィンドウデリゲートに要求する場合があります。さまざまなユーザーアクションが自己完結型のオブジェクトである場合、それらはコマンドパターンの例である可能性がありますが、これはウィンドウデリゲートとは別のアイデアです。
私が理解していること(確かに、ごくわずかです)から、Cocoaモデルの委任は、委任者と委任者の間でコマンドオブジェクトを使用しません(ただし、メソッドの呼び出しは、OOでは「メッセージ」と呼ばれることもあります。実際のエンティティ)。
2つのアイデアは補完的であり、しばしば一緒に使用されますが、それらは別々のアイデアです。デリゲートなしのコマンドパターンとコマンドオブジェクトなしのデリゲートを使用できます。
見る:
http://en.wikipedia.org/wiki/Command_pattern