デザインパターンの基本
はじめに
1)オブジェクト指向とは
1-1)「オブジェクト」を「クラス」から作り、「オブジェクト」同士を相互作用させる
例)
- 自動販売機クラスに、「お金が入れられると、ジュースを出す」というメソッドを持たせ、自動販売機A(object)を作る。
- 人間クラスに、「お金を支払う」というメソッドを持たせ、人間A(Object)を作る。
- 人間A(object)が自動販売機A(object)でジュースを買う。
→人間Aクラス:お金を払う処理
→自動販売機クラス:お金を受け取りジュースを出す処理
1-2)メリットとして「クラス単位で再利用性」が向上する
- 再利用性が向上する→生産性・コードの信頼性が上がる
- 再利用性を向上させるために、「再利用性の高いクラス設計」をする必要がある
2)デザインパターンとは
オブジェクト指向で開発を行なう際に、再利用性の高い設計をするための考え方
3)デザインパターンの利用
記載中
振る舞いに関するパターン
Iteratorパターン
for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }
上記処理で使用されているループ変数iの役割をパターン化したものが、「Iterator パターン」。つまり、「Iterator パターン」とは、ある集合体の要素1つ1つに、順次アクセスする方法を提供するパターン。
【利用するべきパターン】
- アプリケーション固有なデータ、構造を持ったオブジェクトにアクセスをする場合
- 配列やコレクションなどの集合する要素にアクセスする場合
- (配列はforループで回せるが、リストなどのコレクションは難しかったりする)
- 集合の要素に順次にアクセスする必要がある場合
【目的】
集合体を作成するクラスに変更があった場合も、利用する側は、変更しなくて済む
構造に関するパターン
Adapter パターン(Wrapperパターン)
※既存のクラスメソッドの再利用
dapterパターンは、インタフェースに互換性の無いクラス同士を組み合わせることを目的としたパターン。
2つのメソッドのインタフェースの違いを吸収してやる Adapter を準備することで、少ない変更で新しいメソッドに乗り換えることができる
・ Adapter パターン、2つの方法。
1)継承を利用した方法
=>interface
2)委譲を利用した方法
=>abstract class
Bridge パターン
1)「機能追加」
(スーパークラスが持っていない機能をサブクラスで追加)を目的としたもの
2)「機能実装」
(スーパークラスで定義したインタフェースをサブクラスで実装)を目的としたもの