ここでは,オブジェクト指向設計を支える「デザインパターン」とは何か,また活用することで得られる利点や活用のポイントを述べる。デザインパターンとはオブジェクト指向設計において頻繁に登場する問題を解決するための「常套手段」をまとめたものである。

 ここまでの解説で,オブジェクト指向開発の基本的な考え方,およびモデリングの重要性を理解してもらえたはずだ。次に実際の設計段階に目を転じてみよう。高品質のオブジェクトを作成する効果的な方法は,すでにあるモデルやクラスを再利用部品として活用するやり方である。

 オブジェクト指向は,もともとソフトウエアの再利用性を向上させることを目的としており,その仕組みを,いくつも備えている。ところが実際の開発現場では,思うように再利用が進んでいないという状況を時々目にする。

 ベテランの開発者ならば,迷うことなく再利用部品を選択し,開発を進めることができる。なぜならば,ベテラン開発者は,オブジェクト指向開発をする上で解決すべき問題と,問題解決を阻害する様々な制約がある状況を理解しているからだ。さらに,過去に同様の問題や制約をクリアした経験があることを自覚しており,それを再利用することを瞬時に判断できるのである。

ベテランの「ノウハウ」を活用

 「デザインパターン」は,このような設計上の問題とその解法というノウハウを文書化し,開発者同士で共有できるようにしたものである。

 クラスやオブジェクトの再利用性を高めるための手法としては,ライブラリとして提供されているクラスやフレームワーク,コンポーネントなどを利用することが挙げられる。デザインパターンを活用することも,再利用の手法の1つだが,他の再利用手法とは根本的に異なる点がある。

 クラスやフレームワークの活用とは,具体的なプログラムを再利用することだ。これに対して,デザインパターンを活用して再利用できるのは,技術者の「ノウハウ」である。

 デザインパターンとは,オブジェクト指向設計において,「頻繁に登場する問題を解決するための常套手段」を整理したものである。一口にデザインパターンといっても,開発者たちが蓄えてきたパターンは膨大だ。中でも,オブジェクト指向開発におけるものとしては,その名も「デザインパターン」という書籍に掲載されている23種類のデザインパターン(GoFのデザインパターン)が最も有名だ。

 表1に各パターンを適用すべき問題状況と,適用後の状況を示した。Java,UMLなどについての知識がないと,この内容を理解するのは難しいだろう。ひとまずここではデザインパターンの概要と,その重要性を知っておいて欲しい。

表1●23種類のデザインパターン。適用すべき問題状況と適用後の状況を示した
表1●23種類のデザインパターン。適用すべき問題状況と適用後の状況を示した
[画像のクリックで拡大表示]