1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】デザインパターンのまとめ

Last updated at Posted at 2020-11-03

目的

Javaのデザインパターン全23種を学んだので、その備忘録として記載する。 本記事では、全デザインパターンの概要について記載する。

デザインパターンとは

より効率的で汎用的な設計ができるように考案された、代表的なクラス設計のパターン集。 再利用性が高くコード全体の見通しが良くなるだけでなく、メンテナンスする際にも影響範囲を最小限に抑えることができる。

デザインパターンの種類

デザインパターンは、 ・オブジェクトの生成 ・プログラムの構造 ・オブジェクトの振る舞い に関する3つのパターンに大きく分類される。

オブジェクトの生成

オブジェクトの生成に関するパターンの一覧と概要です。全5種。
パターン名 概要
Factory Method 複数のサブクラスをペアにして生成する。
Abstract Factory Factory Methodを専門にするクラス。
Builder コンストラクタをビルダクラスとディレクタクラスに分け、複雑な初期値のオブジェクトを生成する。
Prototype クローンをプールしておくことで、オブジェクトの生成を簡単にする。
Singleton システムの起動から終了までの間に、そのクラスのオブジェクトが1個しか生成されないことを保証する。

プログラムの構造

プログラムの構造に関するパターンの一覧と概要です。全7種。
パターン名 概要
Adapter 既存クラスを修正することなく、適切なメソッドを追加することができる。
Bridge 関連の強い2つのクラスについて、それぞれのクラスを継承することで拡張しても影響のないようにする。
Composite 階層構造をなすオブジェクト全体に共通のインターフェスを持たせることで、一連の操作を簡単に実行することができる。
Decoraror 共通のインターフェスを実装させることで、クラスの継承よりも幅広く機能を追加できる。
Facade 汎用性の高いクラスのオブジェクトをまとめることで、開発者間で共有しやすくする。
Flyweight 生成済みのオブジェクトをプールしておくことで、オブジェクトの生成・保持に必要な負荷を小さくする。
Proxy 共通のインターフェスを持たせることで、メソッドが呼ばれたときにそれをフックして処理を加える。Decoratorと似ている。

オブジェクトの振る舞い

オブジェクトの振る舞いに関するパターンの一覧と概要です。全11種。
パターン名 概要
Chain of Responsibility リクエストの種類(引数の値)によって、複数のオブジェクトの中から適切なオブジェクトを選択して処理する。
Command リクエストの処理自体をオブジェクト化し、複雑な内容のリクエストを送る。
Interpreter 構文解析の結果として得られるオブジェクト構造をそのまま使ってインタプリタを実行できるので、構文を拡張しやすくなる。
Iterator Iteratorインターフェスを使用して、オブジェクト群の構造に関係なく簡単にアクセスできるようになる。
Mediator 相互作用の内容の変更や部品オブジェクトの追加が簡単にできる。
Memento オブジェクトのある瞬間での状態のスナップショットを取り出して保存しておき、それを使って元の状態を復元できる。
Observer チェックする側とされる側のクラスを切り替えたり増やしたりすることが簡単にできる。
State 状態が複雑に変化しても処理内容の切り替えがシンプルに行え、コード内での状態遷移の見通しがよくなる。
Strategy プログラムの実行中に、その中で使われるアルゴリズムを簡単に切り替えることができる。
Template Method ある1つの大きな処理を複数のステップに分解し、ステップの実行順序は守りつつ、各ステップごとに処理内容を変更する。
Visitor オブジェクトの集合の中に何種類かのクラスが混在していても、それらのクラスを修正することなく処理を追加することができる。

最後に

デザインパターンは、再利用性やメンテナンス性を考えると非常に優秀だが、無理にデザインパターンに当てはめようとすると、かえって複雑なコードになってしまうケースもあるので注意する。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?