Python デザインパターンを学ぶ

Creational

リンク概要
Singletonパターン複数のオブジェクトのインスタンスを作成せず、1つのオブジェクトだけ公開する。
Borgパターン古典的なSingletonパターンを改良したもの。
Factoryパターンオブジェクトの生成プロセスに抽象化されたレイヤーを導入する役割を果たす。
Builderパターンいくつかの小さなオブジェクトを組み合わせて複雑なオブジェクトを作る場合などに有用。
Poolパターン独立した状態の再利用可能なオブジェクトを作成して維持する。
Prototypeパターンオブジェクトのインスタンスを新たに作成するのではなく、クラス(プロトタイプ)のインスタンスを1つだけ作成し、必要に応じてディープコピーを行う。

Structural

リンク概要
Decoratorパターンオブジェクトに動作や属性を追加するために、継承に代わる、より柔軟な方法を可能にする。
Facadeパターンより複雑なオブジェクトを背後に隠す高次のインターフェイスを作る。
Proxyパターンオブジェクトやサービスとそのユーザーの間に、プロキシや中間的なインターフェースを作成する。
Flyweightパターンメモリ集約状態を分離して、共通の共有オブジェクトに格納することができる。
Adapterパターン非均質なオブジェクトのインターフェイスを均質化する際に有効。
Compositeパターン階層的な関係を持つオブジェクトをツリー状に整理する。

Behavioural

リンク概要
Chain of Responsibilityパターンプログラマがオブジェクトの再帰的なチェーンを動的に作成することができる。
Mediatorパターンオブジェクト間の多対多の関係を構築・管理する必要がある場合、これらの関係を維持する仲介オブジェクトを作成すること解決策を提供する。
Observerパターンオブジェクト(observable)とその依存関係(observers)の間の一対多の依存関係をモデル化するために使用できる。
Commandパターン一連のコマンドをオブジェクト(Invoker)にカプセル化したもの。
Mementoパターンオブジェクトがその状態の履歴を外部に保持することを可能にすること(したがって、復帰を実行できる)。
Registryパターンあるクラスのすべてのサブクラスの記録(レジストリ)を管理することができる。
Strategyパターンアルゴリズムのロジックとそのインターフェースを分離することが目的。