アブストラクトファクトリーパターンについて

アブストラクトファクトリーパターンについて、
勉強したことをまとめました。

アブストラクトファクトリーパターンとは

アブストラクトファクトリーパターンとは、オブジェクト生成にかかわるデザインパターンのうちの1つです。
そして、アブストラクトファクトリーバターンを取り入れることで、互いに関連したオブジェクトの抽象化が可能になります。

アブストラクトファクトリーパターンを適用できる場合

  1. 部品の生成や、組み合わせとシステムを分離したい場合
  2. クラスライブラリのI/Fのみを公開し、実装を隠蔽する場合

アブストラクトファクトリーパターンの具体的な適用例

①システム全体で使用するマスターデータの取得

例えば業務システムでは、複数の画面で同じマスターテーブルを読み込む必要があります。
具体的には、従業員情報を管理するシステムでは、従業員マスターや所属マスターなどのテーブルをほとんどの画面で読み込む必要があると思います。
また、販売管理システムでは、商品マスターや顧客マスターへのアクセスが常に必要となると思います。

そして、複数の画面で同じマスターテーブルからデータを取得する場合でも、取得データの条件や、必要となるデータは異なる場合が多いと思います。

そのため、アブストラクトファクトリーパターンを使用して、マスターデータの取得処理をシステムから分離することでマスターデータの取得及び、生成処理を部品としてカプセル化することができます。
そして、マスターデータの取得について、画面側で意識する必要がなくなります。

②日付の処理や端数処理などの共通部品

日付の表示形式や、端数処理などのシステム全体で使用する機能について、画面ごとに使い方が異なる場合に共通部品のI/Fのみを提供し、実装を隠蔽することができます。
そして、実装を隠蔽することで、共通部品を使う側は、必要な日付の形式や端数処理を実行するために、共通部品のI/Fを変更することで対応できるようになります。

③親子関係があり、なおかつ親子で1つの物として扱いたい物

例えば、商品伝票と伝票明細のように、オブジェクト間に親子関係があり、なおかつ2つで1つとして扱う必要がある場合に、アブストラクトファクトリーパターンが使用できます。
なぜなら、商品伝票と、伝票明細のような親子関係がある場合は、親子関係のあるオブジェクトを組み合わせて使用することとなるためです。
そして、アブストラクトファクトリーパターンでは、オブジェクトの組み合わせをシステムから分離し、カプセル化を行うことができるため、アブストラクトファクトリーパターンとの相性が良いと考えられます。

↓↓参考にした書籍↓↓

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

↓↓デザインパターンアーキテクチャに関する書籍↓↓

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

アプリケーションアーキテクチャ設計パターン

アプリケーションアーキテクチャ設計パターン

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計