ObjectSquare [1999 年 7 月号]

[Happy Squeaking!!]


5. デザインパターンとは

5.2  パターンの構成要素


ボトムアップ的に生まれてきたオブジェクト指向での「パターン」の概念は、年月を経て徐々に整理され発展してきました。現在では「パターン」という言葉はもう少し広い意味で使われる傾向にあります。

「パターン」という考え方は、オブジェクト指向の設計のみに適用できるというものではなく、実際にはもっと上流の分析、また下流の実装においても有効なものということがわかってきています。
この広義の「パターン」を一言でいえば、「ある状況下で発生する、典型的な問題についての有効な解決策に名前をつけたもの」となります。

概念的な図で示すと以下のようになります。


パターンの概念図

基本的には、「問題」とそれに対する「解決策」が示されていればいいのですが(これがパターンの最小構成要素となります)、ドキュメントとしての厳密さやわかりやすさを狙って、通常はもう少し細かな単位でパターンを記述します。

まず、「問題」があります。問題は、典型的なものであり、「今回に限って」という性質のものであってはいけません。特定の状況で常に発生する問題についてでなければ、再利用の対象にはならないからです。

問題には「特定の状況」が付随しており、更に、問題からは様々な「力、制約(Forces)」が発生します。制約は相反する方向に働き、通常トレードオフが発生します。(柔軟性を高めるようとすると、パフォーマンスが悪くなるなど)。様々な方向に発散している制約のうち、どれを優先度の高いものとして解決していくかが示されないと、パターンを誤った場合に適用してしまう可能性があります。良いパターンとは、問題に伴う制約をなるべく広い範囲で洗い出しているものです。(全てを解いているものではありません。それは通常不可能なことです)。

次に、発散している制約のうち、対象とするものについて、典型的な「解決策」を示します。解決策は、有効性が実証されたものでなければなりません。「今回に限って、たまたまうまくいった」というものでは再利用できないからです。3回程度は実施に移され、成功が認められたものであるべきです。解決策は、解決に必要な要素間の構造的な側面に加えて、それらの振る舞いの仕方についても述べておかないと完全とはいえません。

パターン適用の後には、実際の効果と、未解決の制約と、トレードオフによる副作用が残されます。これはいわば「新たな状況」の発生であり、その状況から次の問題、次に適用すべき「関連するパターン」が生まれてきます。

以上がパターンの大体の構成要素になります。最後に、これら全てを説明しなくとも、どのパターンについての話をしているのかがすぐにわかるように、「インパクトのある名前」をつけておきます。ボトムアップ的に複数の異なる分野からパターンが生まれてきた場合には、特定の分野にとってわかりやすい「別名」を幾つかつけておく場合もあります。


© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next