logo

デザインパターン

Facade

複雑な既存システムの使用が容易になるように、クライアントに対して簡潔なインターフェースを提供する。

Adapter

修正できない既存オブジェクトを、目的のインターフェースに適合させる。継承を利用するパターン(Class Adapter)と、委譲を利用するパターン(Object Adapter)がある。

Bridge

クラス数の爆発を回避するために、実装を使用しているオブジェクト群から実装を切り離す。使用する実装のインターフェースを定義し、使用側はそのインターフェースを使用する。

Strategy

様々な業務上のルールやアルゴリズムを状況に応じて使い分けられるようにするために、既存のアルゴリズムの実装からアルゴリズムを個別に切り出す。同類のアルゴリズムを定義し、それぞれをカプセル化して交換可能にする。※関数が第一級オブジェクトの言語(Pythonなど)はこのパターンが暗黙的に使用されているので、明示的に定義する必要はない。

Composite

Observer

Decorator

機能の拡張部分のみを別のクラスに切り出す。そのクラスのインスタンス変数に拡張元のインスタンスを持たせる。そして拡張元のクラスと同じインターフェースを実装する。

Template Method

スーパークラスに抽象メソッドと、その抽象メソッドを使った処理の流れを定義したTemplate Methodを定義する。サブクラスではスーパークラスの抽象メソッドを実装するが、それらを組み合わせた実際の処理はスーパークラスのTemplate Methodで実行される。

Copyright 2025 Tech Blog