「バケツリレー」のChain of Responsibilityパターン

デザインパターンは、作業して、学ぶことに意味がある。 本連載も最終回となりました。第1回では生成に関するパターンとしてFactory Methodパターン、第2回では構造に関するパターンとしてAdapterパターンとBridgeパターンを取り上げました。もし、まだよく理解されていないようなら、第1回

清水 英雄

2009年5月26日 20:00

デザインパターンは、作業して、学ぶことに意味がある。

 本連載も最終回となりました。第1回では生成に関するパターンとしてFactory Methodパターン、第2回では構造に関するパターンとしてAdapterパターンとBridgeパターンを取り上げました。もし、まだよく理解されていないようなら、第1回(http://thinkit.jp/article/931/1/)・第2回(http://thinkit.jp/article/936/1/)を見直してみてください。

 ただサンプルコードを見ているだけでは、理解しにくいところもあると思います。また、理解したつもりになっていても正しく理解できていないこともあります。

 デザインパターンを速習するには、サンプルコードをコピーするのではなく、自分で入力してみて、その動作を体験するのが一番です。また、クラス構造やオブジェクトの関連性などを完全に理解していないと、実践で利用価値を見いだそうとしても難しいものがあります。特にUMLが理解できれば、非常に強力な表現方法を身につけたことになりますので、デザインパターンを理解すると同時にUMLも覚えると、実践での利用は進んでいくと思います。

 GoFのデザインパターンは、この3回の連載だけですべてを紹介できるものではありません。ご紹介できなかったものを含めて23種類のパターンについて、1つ1つを「このクラスの関係はこういうことではないのか?」「このクラスの関係をUMLで書くとこのようになるのでは?」などを考えながら、実際にUMLを記述してみる作業は、理解を進めるために重要なことです。

 私たちは、よくクラス設計のときに、プログラマーの理解度を同じにするために、ホワイトボードを使用します。ホワイトボード上で書かれたUMLクラス図は、添削のたびに書き換えられたり、消されたりしていきます。そして最後に残ったクラス図は、無駄が省かれてすっきりしていることが多いものです。これらの作業は、デザインパターンを学ぶことに、よく似ていることだと思っています。

UML化することでイメージを定着させる。

 少し面倒に感じるかもしれませんが、「自分で入力したコードを実行することによってふるまいを体験し、UML図で構造を理解する方法」は、デザインパターンの速習にぴったりでしょう。

 ただ、デザインパターンを理解していくと、あらゆるプログラムにデザインパターンを適用すればいいということでもないと感じてくるかもしれません。適用したために修正がしにくくなった例も数多く見てきました。

 だからといって、デザインパターンを避けて通ることはできません。デザインパターンは、先人たちの知恵のエッセンスであることは確かなのです。GoFのデザインパターンを最初に学ぶことがプログラミングのセンスアップに大きく役に立つことは事実なのですから。

 少し話が長くなりましたが、本連載「速習!デザインパターン」の最後はChain of Responsibilityパターンを取り上げます。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30