ようこそ。睡眠不足なプログラマのチラ裏です。

なぜデザインパターンを学習するのか


デザインパターンを学習する4つの理由

1.解決策の再利用
2.共通用語・共通認識の確立
3.個人々々のオブジェクト指向技術の向上
4.チームの開発効率の向上


1.解決策の再利用

先人たちの経験や実績により、既に確立されている設計パターンを再利用することで、
より早く的確に問題解決の糸口を見出すことができる。
何度も繰り返されている問題の解決策について、何度も再発明をする必要はない。


2.共通用語・共通認識の確立

ソフトウェア開発におけるコミュニケーションを円滑にするためには、
問題に対する共通の認識を持つ必要がある。デザインパターンは、その名前と目的、達成方法について、
共通の認識と共通のボキャブラリを提供し、開発チームの意思伝達の大きな手助けとなる。
つまり、カタログ化されたデザインパターンによって、分析と設計に関してより高い展望がもたらされる。


3.個人々々のオブジェクト指向技術の向上
GoFデザインパターンは、優れたオブジェクト指向設計を生み出す戦略を示唆しているものが多い。
そのため、オブジェクト指向技術初心者であっても、GoFの優れた設計テクニックを知ることにより、
オブジェクト指向のエッセンスを感じて、比較的短期間で基本的なオブジェクト指向技術が身に付く。
また、パターンを複数組み合わせて利用したり、応用して発展させる力も身に着けることができる。


GoFデザインパターンは、インターフェイスを用いて設計することに重きを置いている点で、優れている。
クラス継承よりもオブジェクトの集約(コンポジションなど)を多用するべきであると示しているので、おおいに参考になる。
メイヤーが提唱しているような、契約による厳密なオブジェクト指向では、継承は「機能の継承」を目的とせず、
「サブクラスはスーパークラスの一種である」という、いわゆる「is-a」の関係*1を持つことを重要視している。
そのため、単に機能を持たせたい場合には、継承ではなくコンポジションとすることが推奨される。


また、例えば振る舞いに関するパターンである「Strategyパターン」のように、アルゴリズムをカプセル化するなど、
流動的要素を見つけ出し、それをカプセル化するという、オブジェクト指向の基本的な考え方を学ぶことができる。


4.チームの開発効率の向上
上記、1,2,3の総合結果として、チーム全体としての分析・設計技術、
問題解決能力が高まり、チームの開発効率の向上が期待できる。

*1:「is-a関係」とは、あるクラスが他のクラスの「一種」であること。 また、「has-a関係」とは、あるクラスが他のクラスを「保持」していることである。