1

プログラミングしているゲームでは、ゲーム内のすべてのエンティティに複合オブジェクトを使用します。エンティティは、ヘルスや移動などの機能の小さなチャンクを定義するコンポーネントオブジェクトで構成されています。

私の質問は:

コンポーネントからの通知を投稿しても大丈夫ですが、代わりに通知を送信するオブジェクトとしてその親エンティティを参照しますか?

エンティティ内の正しいコンポーネントを見つけるよりも、エンティティにオブザーバーを追加する方が簡単なので、これを実行したいと思います。

別のオブジェクトの通知を投稿してはいけないと言われました。

長所と短所は何ですか?

4

1 に答える 1

0

通常、通知はオブジェクトから「送信」されたものと考えます。したがって、デバッグ中に通知のソースを見つけたい場合は、そのオブジェクト自体でコードを探します。

その期待に違反することは違法ではありませんが、通知の本当のソースを見つけるためにもっと一生懸命働かなければならないときに、誰かがあなたを少し呪うかもしれません。

また、すべてが通知を送信する個別のコンポーネントが多数ある場合、通知を変更する必要がある場合は、コードのリファクタリングがより困難になる可能性があります(たとえば、その中のuserInfo)。

コンポーネントが常にその親への有効なポインタを持っていることを保証できる場合、最善の解決策は、コンポーネントにその親に通知を投稿するように依頼させることです。

@implementation ComponentA

- (void)someMethod
{
     [self.parent pleasePostSomethingChangedNotification];
}

@end

@implementation Parent

- (void)pleasePostSomethingChangedNotification
{
     // Parent may post the notification immediately,
     // or may selectively post the notification based on some other condition,
     // or post it later on after coalescing changes from several components, 
     // or ...
}

@end
于 2012-04-09T00:27:26.833 に答える