デザインパターンの種類
デザインパターンの種類
デザインパターンは 23種類あり、次の3つに分類されています。
- オブジェクトの「生成」に関するパターン
- プログラムの「構造」に関するパターン
- オブジェクトの「振る舞い」に関するパターン
また、ぞれぞれに内容を表す名前が付けられています。その名前からは、何かしら特定のパターンが想像できます。
オブジェクトの「生成」に関するパターン
プログラムの「構造」に関するパターン
プログラムの「振る舞い」に関するパターン
設計への利用
デザインパターンは、そのまま現在直面している問題の解決につながるようなものではありません。デザインパターンを学習して、なぜこれらが良い設計とされているのかを理解することが大切なのです。これらの設計のキモをつかむことで、明日からの設計が少しずつ変わってくるはずです。
さて、ではデザインパターンはどのように設計者を助けてくれるのでしょう。設計に困ったといっても困り方もいろいろあります。ここではデザインパターンを思い出すべき場面をいくつか紹介しようと思います。
クラスの抽出
オブジェクト指向では、基本的に現実世界に即した形で設計するとよく言われますが、実は、現実世界には存在しない抽象的なものをクラスとして抽出することがあります。しかし、抽象的な概念をクラスにするという設計に至るのは難しいのです。
デザインパターンには、このような抽象的な概念をうまく取り入れたものがいくつかあります。例えばStrategy パターンというパターンでは「戦略」をクラスとして抽出していますし、State パターンでは「状態」というさらに抽象的なものをクラスとして抽出しています。
デザインパターンを学習することで、このような抽象的なものをクラスとして抽出する感覚が身についてきます。現実世界だけを見ていると、なかなか設計がうまくいかないことがあります。こんなときは、デザインパターンを思い出して、抽象的な概念をクラスとして抽出することを考えてみましょう。
実装とインタフェースの切り分け
デザインパターンでは、インタフェースに対してプログラミングすることが積極的に取り入れられています。デザインパターンを学習していくと、インタフェースを使うことのすばらしさに気付かされます。具象クラスを変数宣言している場面では「インタフェースにしておいたほうが良いのではないか」と常に自分に問いかけるようにしましょう。
再利用性を高める
デザインパターンでは、継承やオブジェクトコンポジション(別のオブジェクトが持つ機能を組み合わせて利用すること)がとてもうまく利用されており、とても参考になります。再利用性を高めたいときには、ぜひともこれを思い出すようにしてください。 デザインパターンでは、オブジェクトコンポジションを多用することを理想的としています。オブジェクトを組み合わせることで、必要とする機能の全てが用意できるようになることが、再利用性が最も高まった状態と言えるからです。
変更に強くする
仕様の追加や変更に柔軟に対応できるような設計が、優れた設計であることは言うまでもありません。仕様の追加や変更が発生するたびに、設計から見直すことは、大きなコスト増につながります。設計の変更には、クラスの変更、実装の変更、再テストなどを伴うからです。仕様の追加や変更に柔軟に対応するためには、あらかじめ起こりうる追加や変更を想定しておく必要があります。デザインパターンは、想定される仕様の追加や変更に柔軟に対応できる方法を教えてくれます。