オブジェクト指向の手本、デザインパターン
デザインパターンはUMLでイメージを定着させる
UMLは、オブジェクト指向のさまざまなものが表現できます。デザインパターンの場合は、UMLの1つであるクラス図を用いて、プログラムの構造を視覚化することができます。視覚化されたものはシンプルな形をしていますので、クラス設計のときに「ここはこのパターンのイメージが的確ではないか?」と、すばやくイメージできるようになります。コードで理解し、UMLで視覚化されたものを覚えておく。これが、デザインパターンを速習するためのコツなのです。
デザインパターンは、クラスの構造とその関連に意味を持たせる場合がほとんどなので、UMLなどでその構造を視覚的に覚えておけば、プログラマー間での理解も進み、実践でも利用しやすいものとなるでしょう。UMLをまだ知らない場合は、これを機会に学習してみてはいかがでしょう。オブジェクト指向を多方面から記述できるこの優れた言語は、今後のプログラミングにきっと大きく役に立つはずです。
では、実際のパターンを見ていきましょう。今回は生成に関するパターンからFactoryMethodパターンを説明します。
FactoryMethodパターン<生成物を間違わないように>
FactoryMethodパターンの特徴は、下記の2点です。
1.オブジェクトの生成はサブクラスに委ねる
2.間違ったインスタンスが作成することがないようにできる。
では、どのようなふるまいをするのか、本文末のサンプルコードを見てみましょう。
人が物を作成するという事例で考えてみます。実際にできあがる物はケーキとおすしです。この2つは生成物クラスでまとめることができます(生成物の抽象化)。そして、この抽象化された生成物からの派生物として、具象生成物(ケーキやおすし)が定義できます。
次に人について考えます。今回は、作成者クラスという枠で考えていますが、この作成者クラスでは生成するものはまだ決めることができません。 しかし、作成者クラスは、具象生成物を作るという操作(メソッド)は定義しておきます。 ケーキ職人クラス、すし職人クラス(具象作成者)は、この作成者クラスを継承した派生クラスで定義します(作成者の抽象化)。
実際の物(生成物)を生成するのは、職人を継承した派生クラス(ケーキ職人クラス・すし職人クラス)が担当します。FactoryMethodパターンは、作成者(具象作成者)に実際の製品(具象生成物)の生成を任せます。