Chain of Responsibility の実装の比較

ここでは、オブジェクト指向の言語の比較を目的として、デザインパターンの Chain of Responsibility の比較をしてみるぜ。Chain of Responsibility ってのは、デザインパターンの 1 つで、リクエストをオブジェクトのチェインに投げて、処理できるものがそいつを処理するってものだ。(参考:ギコ猫と Chain of Responsibility

次のようなチェインを考えよう。

ということだ。

次の言語を用いて実装してみた。それぞれ特色があって、見比べるととても面白い。ポイントは、リクエストの送信、チェインの探索を何で実装しているか、ということと、リクエストとハンドラを増やすときにどのくらいの手間がかかるか、ということだ。

そして、Chain of Responsibility が、実際のフレームワークでどういう風に使われているか、ってことも見てみよう。ここでは NSResponder を取り上げてみる。これは Objective-C を使っているけど、言語の特性をうまく利用しているのが分かると思うよ。


[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer News] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解] [Mac OS X Programming Books Review] [オブジェクト指向の言語比較論]

mailto: mkino@xd5.so-net.ne.jp