Javaのデザインパターンを整理(生成編)
Javaのデザインパターンについて復習します。プログラムをデザインするにあたって、参考にできる引き出しは多く持っておきたいです。
デザインパターンとは
過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したもの
有名なのはGoFの23のデザインパターンです。それぞれのデザインパターンは3つの分類に分かれています。
- オブジェクトの「生成」に関するパターン
- プログラムの「構造」に関するパターン
- オブジェクトの「振る舞い」に関するパターン
生成に関するパターン
パターン名 | 概要 |
---|---|
AbstractFactory | 関連する一連のインスタンスを状況に応じて適切に生成する方法を提供する |
Builder | 複合化されたインスタンスの生成過程を隠蔽する |
Singleton | あるクラスについて、インスタンスが単一であることを保証する |
FactoryMethod | 実際に生成されるインスタンスに依存しない、インスタンスの生成方法を提供する |
Prototype | 同様のインスタンスを生成するために、原型のインスタンスを複製する |
AbstractFactoryパターン
- 概要
- AbstractFactoryパターンは関連する一連のインスタンスを状況に応じて適切に生成する方法を提供します。
- インスタンスの生成を専門に行うクラス(Factory)を用意することで、整合性を必要とする一連のオブジェクト群を間違いなく生成します。
- 何が嬉しいか
- 環境や条件によって処理パターンを切り替えて実行する仕組みを実現する場合に、利用者が具体的な実装を意識せず透過的に呼び出せます。
クラス図
Builderパターン
- 概要
- 生成過程が決まっている場合に、生成過程を隠蔽することで同じ過程で異なる内部形式のインスタンスを生成する方法を提供します。
- 何が嬉しいか
- 生成処理の流れを意識することなく、個別の処理のみに注目して実装することができます。
クラス図
- Director
- 生成物の作成過程を管理
- Builder
- 各生成物の中身を実装
Singletonパターン
クラス図
実装例
Singletonの実装方法についてはいくつか方法がありますが、以下はstaticファクトリーメソッドによるSingletonの実装です。
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static synchronized Singleton getInstance() { return instance; } }
public class Main { public static void main(String[] args) { Singleton config = Singleton.getInstance(); } }
参考
Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで
- 作者: 谷本心,阪本雄一郎,岡田拓也,秋葉誠,村田賢一郎,アクロクエストテクノロジー株式会社
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/18
- メディア: 大型本
- この商品を含むブログを見る