Abstract Factory パターン - 抽象ファクトリパターン
2008/06/24 22:43Update
Abstract Factory パターンはGoFによる23種類のデザインパターンの一つで、インスタンスの生成方法を提供します。Abstract Factory パターンでは、具体的なクラスを知らずに、抽象ファクトリ・クラスだけで異なるインスタンスを生成することができます。
はじめに
大規模なシステム開発では、より柔軟性、拡張性があるシステムを構築するために、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を製造するクラス。
次のページ:サンプルソース
Sponsored Link
- Relative Articles
- The Stable Abstractions Principle (SAP) - OO設計のSAP安定度・抽象度等価原則 - (2008/06/09 17:48)
- ASP.NETでのフロント・コントローラ(Front Controller)実装 - (2009/10/20 15:22)
- Factory Method パターン - ファクトリメソッドパターン - (2008/06/09 22:44)
- Singleton パターン - シングルトンパターン - (2008/06/10 15:36)
- Prototypeパターン - プロトタイプパターン - (2008/06/10 17:23)
- Builderパターン - ビルダーパターン - (2008/06/10 19:01)
- Adapter パターン - アダプターパターン - (2008/06/11 11:30)
- Composite パターン - コンポジットパターン - (2008/06/11 16:59)
- Interpreter パターン - インタプリタパターン - (2008/06/13 15:42)
- Chain of Responsibility パターン - 責任の連鎖パターン - (2008/06/14 00:28)