GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

faif

python-patterns – Pythonのデザインパターン/イディオムのコレクション

投稿日:

Pythonのデザインパターン/イディオムのコレクション

パイソンパターン

Pythonのデザインパターンとイディオムのコレクション。

実装が追加または変更されたら、このファイルを更新してappend_output.sh (たとえば./append_output.sh borg.py)を再実行して出力コメントを最新の状態に保つようにしてください。

現在のパターン:

創造的なパターン

パターン 説明
抽象的な 特定の工場で汎用関数を使用する
ボルグ インスタンス間で共有状態のシングルトン
ビルダー ビルダー・オブジェクトは、複数のコンストラクターを使用する代わりに、パラメーターを受け取り、構築されたオブジェクトを戻します
factory_method 特別な関数/メソッドを委譲してインスタンスを作成する
lazy_evaluation Pythonで遅延評価されたプロパティパターン
プール 同じ型のインスタンスのグループをインスタンス化して維持する
プロトタイプ 新しいインスタンスのためのプロトタイプのファクトリとクローンを使用する(インスタンス化が高価な場合)

構造パターン

パターン 説明
3層 データ→ビジネスロジック→プレゼンテーション分離(厳密な関係)
アダプタ ホワイトリストを使ってあるインタフェースを別のインタフェースに適合させる
ブリッジ クライアントとプロバイダの仲介者がインタフェースの変更を柔軟にする
複合 クライアントは個々のオブジェクトと組成を一様に扱うことができます
デコレータ アウトプットに影響を及ぼすために機能を他の機能とラップする
ファサード あるクラスをいくつかの他のAPIへのAPIとして使用する
フライウェイト 類似/同一の状態のオブジェクトの既存のインスタンスを透過的に再利用する
front_controller アプリケーションに送られる単一のハンドラ要求
mvc モデル< – >ビュー< – >コントローラ(厳密でない関係)
代理 オブジェクトが操作を他のものに振り向ける

行動パターン

パターン 説明
連続したハンドラの連鎖を適用してデータを試して処理する
カタログ 一般的なメソッドは、建設パラメータに基づいて異なる特殊なメソッドを呼び出す
chaining_method callback next objectメソッドを続行する
コマンド 後で呼び出すコマンドと引数をバンドルする
イテレータ コンテナをトラバースしてコンテナの要素にアクセスする
メディエーター 他のオブジェクトをどのように接続してプロキシとして動作させるかを知っているオブジェクト
記念碑 直前の状態に戻るために使用できる不透明なトークンを生成する
観察者 データへのイベント/変更の通知のためのコールバックを提供する
publish_subscribe ソースはイベント/データを登録済みのリスナーにシンジケートします
レジストリ 指定されたクラスのすべてのサブクラスを追跡する
仕様 ブール論理を使用してビジネスルールを連鎖させることによってビジネスルールを再結合することができます
状態 論理は、離散的な数の潜在的な状態と、次の状態に遷移することができる
戦略 同じデータに対して選択可能な操作
テンプレート オブジェクトは構造を課しますが、プラグ可能なコンポーネントを取ります
ビジター コレクションのすべての項目に対してコールバックを呼び出す

テスト容易化パターンの設計

パターン 説明
setter_injection クライアントはセッターインジェクション(dependency injectionの実装の変形)を介して依存オブジェクトをSUTに提供し、

基本パターン

パターン 説明
delegation_pattern オブジェクトは、第2のオブジェクト(デリゲート)に委譲することによってリクエストを処理し、

その他

パターン 説明
黒板 アーキテクチャモデル、ソリューションを構築するために異なるサブシステムの知識を組み立て、AIアプローチ – 4つのパターンの非ギャング
グラフ検索 グラフ作成アルゴリズム – 4パターンの非ギャング
hsm 階層的状態機械 – 4パターンの非ギャング







-faif
-, ,

執筆者: