オブジェクト指向設計


Abstract Factory パターン - 抽象ファクトリパターン

2008/06/24 22:43Update
TAGS: Abstract Factory | GoF | デザインパターン | OOD | オブジェクト指向設計

Abstract Factory パターンはGoFによる23種類のデザインパターンの一つで、インスタンスの生成方法を提供します。Abstract Factory パターンでは、具体的なクラスを知らずに、抽象ファクトリ・クラスだけで異なるインスタンスを生成することができます。

Page:  <1|2>

はじめに


大規模なシステム開発では、より柔軟性、拡張性があるシステムを構築するために、new を使わずに、「ファクトリ」(Factory)と呼ばれるクラスを使って、インスタンスを生成します。

Abstract Factory は、インスタンスを生成するための抽象的なファクトリ、及びそれに派生した具体的なファクトリクラスを用意し、インスタンスの生成方法を提供します。

抽象ファクトリは、インスタンスの生成のインタフェースの提供、及びサブファクトリの管理を行います。
サブファクトリは、具体的なインスタンスの生成を行います。

Abstract Factory パターンのクラス図


<<クラス図>>


◇ AbstractFactory(1):抽象ファクトリ・クラス。
    →インスタンス生成のインタフェースの提供
    →サブファクトリ・インスタンスの生成方法の提供/管理
◇ ConcreteFactory(n):サブファクトリ・クラス。抽象ファクトリ・クラスから継承。
    →(製品)インスタンスの生成

◇ AbstractProduct:抽象製品・クラス。生成されるインスタンスのクラスの抽象。
◇ ConcreteProduct:サブ製品・クラス。抽象製品・クラスから継承。

Abstract Factory パターンの使用シーン


◇ インスタンスを生成する必要がある
◇ 継承関係がある複数のクラスのインスタンスを生成する必要がある
◇ システムの拡張性を求める。今後既存クラスの継承による新しいクラスのインスタンスを生成する可能性がある
◇ クライアントは簡潔性を求める


Abstract Factory パターンの使用例


次の製品を製造しようとします:
①Bus(バス)、ModelBus(モデルバス)
②Truck(トラック)、ModelTruck(モデルトラック)

Abstract Factory パターンを用いて実装してみます。

製品関連のクラス
AbstractBus:Bus、ModelBusの抽象クラス
Bus:AbstractBusから継承する。
ModelBus:AbstractBusから継承する。

AbstractTruck:Truck、ModelTruckの抽象クラス
Truck:AbstractTruckから継承。
ModelTruck:AbstractTruckから継承。

ファクトリ関連のクラス
CarFactory:抽象ファクトリクラス。
BusTruckFactory:Bus、Truckを製造するクラス。
ModelFactory:ModelBus、ModelTruckを製造するクラス。

次のページ:サンプルソース

Page:  <1|2>

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments