itok's Lab

昔の開発ネタを記録として残してます

返事のある notification

「通知(notification)」という仕組みはデザインパターンとしても有名でかつ非常に基本的。お互いに相手を知らないオブジェクト間のメッセージとして、非常に重宝しています。最近の言語、というかその言語が動く基本フレームワークにはたいがい仕組みとして組み込まれているわけで、CocoaでいうとNSNotificaionCenterがそれをになっています。

まあ、簡単にいうなら「これこれこういうふうになったんで、もし必要があれば誰かあとの処理は適当にやっておいて」っていう感じですかね。ここでいう「誰か」は単数でも複数でもいいし、もちろん誰もいなくてもいい。だから、オブジェクト間の結合はかなりゆるゆる。ちなみに、Objective-Cでいうところのデリゲートはこれとはちょっと違って「あなたこれするっていったよね?じゃあ、お願いやっておいて」かな。こっちは受信側があらかじめ送信側に直接十分の存在を教えてあげる必要があります。もちろん実行時に動的に組み換えられるという意味ではこちらもかなり有益なんですが、オブジェクト間の結合はちょっときつめ。

さて、ふと思ったんですが、今欲しいのはこのいずれでもないんです。「誰でもいいから誰かこれを処理して、その結果も教えて」という結構言いたい放題系。いわば、返事のあるnotification。だけど、これはさすがに「誰か」が複数だといろんな結果が返ってきて困るので単数限定にはなりますけれど。オブジェクト間の結合はゆるゆるのままがいいし、でもその返事もすぐに返して欲しい。こういうのってなんていうんですかね?っていうかそもそもその設計思想がおかしい?

みた感じ、Objective-Cにはそういう枠はありません。でもまあ、実装するにしても普段使いの実用レベルであればそんなに大変なもんじゃなさそうだからいいけれど。