のぶLab.

流しのソフトウェアエンジニアの雑記帳. Android, Scala, Clojure, Ruby on Railsなど

GOFデザインパターンをPythonで - Iterator

こちらの写経です。

Iterator

要素の集まりをもつオブジェクトの各要素にアクセスする方法を提供する。
各要素へのアクセス方法はオブジェクトの内部仕様に依存しない。

GOFデザインパターンをPythonで - Observer

こちらの写経です。

Observer

あるオブジェクトが状態変化したとき、自動的に変更を観察者に通知する仕組みです。
ここではDataクラスのセッターでnotify()メソッドを呼び出すことで、状態変化時に通知を行います。

GOFデザインパターンをPythonで - Factory Method

こちらの写経です。

Factory Method

インスタンスの生成を直接行わず、それを担うメソッドに任せる。
これによって生成するインスタンスを柔軟に変更することができる。

GOFデザインパターンをPythonで - Singleton

今回はこちらを参考にしました

Singleton

唯一のインスタンスであることが保証されたクラス。
グローバル変数問題やテスト難化などがのため使用には要注意。

GOFデザインパターンをPythonで - Mediator

こちらの写経です。

Mediator

オブジェクト間で調整が必要な場合の取りまとめを行う。
オブジェクト同士がお互いを参照しあうことがないようにして、低結合を保つ。

GOFデザインパターンをPythonで - Facade

こちらの写経です。

Facade

複数のクラスやメソッドを呼び出す場合、クライアントが呼び出し順などを意識する必要のないよう、一連の処理をまとめて、一つのインターフェイスで提供する。

ここでは各TCクラスのメソッド呼び出しをTestRunnerのrunAll()でひとまとめにして一つのインターフェイスを提供している。

参考

15.Facadeパターン | TECHSCORE(テックスコア)
http://www.techscore.com/tech/DesignPattern/Facade.html/

GOFデザインパターンをPythonで - Decorator

こちらの写経です。

Decorator

あるクラスに機能を追加したい場合、DecoratorはDecorateeを引数にとるなどしてインターフェイスを同一視して機能拡張が可能。

参考

12. Decorator パターン | TECHSCORE(テックスコア)
http://www.techscore.com/tech/DesignPattern/Decorator.html/

GOFデザインパターンをPythonで - Strategy

こちらの写経です。

Strategy

状況によってアルゴリズムを変更する必要がある場合に有効。
if分の分岐内にアルゴリズムをかき分ける必要がなくなる。

アルゴリズムカプセル化アルゴリズムを呼び出すインターフェイスのみ提供する。
クライアントはそのアルゴリズムの実装については知っている必要がない。

参考

10. Strategy パターン | TECHSCORE(テックスコアhttp://www.techscore.com/tech/DesignPattern/Strategy.html/
how is this Strategy Pattern written in Python? (the sample in Wikipedia) - Stack Overflow
http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern-written-in-python-the-sample-in-wikipedia

GOFデザインパターンをPythonで - Adapter

こちらの写経です。

Adapter

あるクラスのインターフェイスをクライアントの要求するインターフェイスへ変換する。

ここではAdapterクラスを介してDog、Cat、Human、Carクラス内のメソッドをmake_noise()として呼び出す。