Chain of Responsibility Pattern in Python
Chain of Responsibility Pattern in Pythonを、編集してオンライン実行できる実践例で学びます。
Chain of Responsibility Patternとは?
Chain of Responsibility Pattern in Pythonを、編集してオンライン実行できる実践例で学びます。
どのような場面で使う?
- 実績のある構造を使って、繰り返し発生するオブジェクト設計の問題を解決します。
- 責務を分離し、コードを拡張・テストしやすくします。
- チームでアーキテクチャを議論するときに共通の設計用語を使います。
サンプルコード
main.py
class Approver:
# Chain of Responsibility: offer a request to handlers in order.
def __init__(self, name, limit, next_approver=None):
self.name, self.limit, self.next = name, limit, next_approver
def approve(self, amount):
# Handle locally or pass the request along the chain.
if amount <= self.limit:
return f"{self.name} approved {amount}"
if self.next:
return self.next.approve(amount)
return "Declined"
chain = Approver("Lead", 100, Approver("Manager", 1000))
print(chain.approve(500))
期待される出力
Manager approved 500
仕組み
この例ではChain of Responsibility Pattern in Pythonを説明します。入力値を変更してコードの動作を確認してください。
値を変更し、PythonをインストールせずにCodeUtilityオンラインPythonコンパイラで実行できます。
練習問題
入力値と境界ケースを変更し、より大きなデータでも動作を確認してください。
- パターンの構造を保ったまま、サンプルの対象領域を置き換えてください。
- パターンをより単純な実装と比較し、トレードオフを説明してください。
- 別の実装を追加する前に、各参加要素のテストを書いてください。