ゴミ捨て場

命を大事にしな

デザインパターンとともに学ぶ オブジェクト指向のこころ 5

第5章 デザインパターンの紹介

デザインパターンの起源

  • 建築における品質(ここでいう品質とは、建築として優れているとか美しいとか感じさせるふわっとした何かのこと)について、客観的基準が存在していると仮定したAlexanderという人がいた。
  • つまり、建築の美とは各々の単なる趣味で判断されるたぐいの問題ではなく、測定可能な客観的基準により美を描写可能であるとした。
  • 文化人類学という学問分野においても同じ発見がなされている。ある文化に属する人々の間に共通する美的感覚、すなわち優れたデザインの存在が示唆されている。
  • 文化により、個人の感性を超越したパターンが、デザインを評価する上での客観的基準になるうるとされている。
  • Alexanderは、よく似た設計に共通して存在すると悪い要素、良い要素を探し、そして実際に共通するものを見つけた。
  • また、解決すべき問題から、構造物の条件を切り離すことは出来ないということ結論にたどりついた。
  • このように、Alexanderはよく似た問題を解決する構造に着目し、優れた設計に存在する類似点を洗い出していった。そしてこの類似点のことを「パターン」と呼んだ。

パターンを描写するのに必要な4つの項目

  • パターンの名前
  • パターンの目的(=どのような問題を解決するか)
  • 目的の達成方法
  • 目的を達成する上で考慮すべき制約とフォース(特定状況下で解決策を限定する制約のこと。優れた中庭はプライベートな戸外空間が求められるものである、など。)

ソフトウェア開発へのデザインパターンの適用

  • 繰り返し発生するソフトウェア開発の問題で、同じ方法で解決できるものが存在しないか?最初にパターンを見極め、それらパターンを使った特定解に到達できるか?といったことを開発者達が検証し始めた。
  • 結果としてこれらの2つの問いはどちらも間違いなくYESという確信に至った。
  • 1990年代初頭、多くの人々がデザインパターンの研究を行い、中でもGamma、Helm、Johnson、Vlissidesの4人が著したDesign Patternという書籍はこれらのコミュニティに多大な影響を与え、これら4人はGoFGang of Four)と呼ばれるようになった。

なぜデザインパターンを学ぶのか

  • すでに確立されている設計を再利用することで、問題解決に向けて幸先の良いスタートをきることができ、細々した詳細を検討するのを避けられる。
  • コミュニケーションを円滑にし、チームワークを良くするため、問題に対する共通のボキャブラリ、共通の認識を持つ必要がある。デザインパターンに沿うことで、プロジェクトの分析・設計工程における共通の基準が生まれる。
  • パターンにより問題領域、設計工程、オブジェクト指向そのものをより高いところから見渡せるようになる。これにより、早すぎる段階で詳細に囚われるようなことから避けられ、本質的で高次なレベルでの議論がしやすくなる。
  • 大抵のデザインパターンは、ソフトウェアをより修正しやすく、保守しやすいものになる。その場の思いつきで生まれた解決策より変化に強い構造となっている。また、より理解しやすいコードにもなるはずである。
  • デザインパターンを学ぶことにより、オブジェクト設計原則の理解に大きく役立つ。

GoFの考えた優れたオブジェクト指向設計を生み出すための戦略

  • インタフェースを用いて設計する。
  • クラス継承よりオブジェクトの集約を多用する。
  • 流動的要素(次々と仕様変更されるような要素)を見つけ出し、それをカプセル化する。