Abstract Factoryパターン@Java言語で学ぶデザインパターン入門

Java画像

参考書籍

Java言語で学ぶデザインパターン入門第3版

FactoryMethodパターンとは?

参考書籍では以下のように書かれています。

Abstract Factoryパターンでは抽象的な工場が登場し、抽象的な部品を組み合わせて抽象的な製品を作ります。

部品の具体的な実装には注目せず、インターフェースに注目する。そして、そのインターフェースだけを使って部品を組みたて、製品にまとめるのです。

なにやら難しいことを言ってますね。

Abstract Factoryパターンはサンプルコードを見て理解するのが一番いいと思います。

似たようなパターンでFactory methodパターンがありますので、合わせてご覧ください。

Java画像 FactoryMethodパターン@Java言語で学ぶデザインパターン入門

メリット

  • 具体的な工場を新たに追加するのが簡単

詳細はサンプルコードを確認した後に見てみましょう。

サンプルコード

抽象的な部品:Itemクラス

Food,Drinkクラスのスーパークラスです。

このクラスはFood,Drinkクラスを同一視するためのクラスです。

抽象的な部品:AbstractFoodクラス

食品名を保持するためのクラス

抽象的な部品:AbstractDrinkクラス

飲料名を保持するためのクラス

抽象的な工場:AbstractFactoryクラス

工場を取得するためのクラスです。

getFactory()メソッドが厄介なのですが、引数(classname)で指定したFactoryクラスを取得しています。

Mainクラス

抽象的な工場を使って抽象的な部品を製造します。

このクラスでは具体的な部品、工場を一切使っていないことがポイントです。

具体的な工場:Factoryクラス

具体的な部品:Foodクラス

具体的な部品:Drinkクラス

出力

以上のコードを実行すると以下のように出力されます。

メリットの確認

具体的な工場を新たに追加するのは簡単。

これが何を意味するかというと、

すでにどのようなクラスとメソッドを作れば良いかが明確になっているということです。

また具体的な工場を追加しても、抽象的な工場や、Main部分を修正する必要がないのです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!