🐍

Pythonでデザインパターン実装 - 概要

2022/05/19に公開

はじめに

ネット記事、人生初投稿です。
育児休暇で少し時間ができたので、PythonでGoFデザインパターン23個を実装してみました。

GitHubリポジトリは↓
https://github.com/koei-kaji/design-patterns-python

結城浩さん著の増補改訂版Java言語で学ぶデザインパターン入門を基に、独自にPython用に書き換えました。
そのため、アルゴリズムや詳細な処理については、こちらの書籍をご参照ください。
とてもわかりやすいです。最近、第3版が発売されたみたいですね。

実装してみて

いままで使ったことがなかったPythonの構文や記法を知ることができ、良い勉強になりました。
いつもと異なる視点から設計を考える良い機会になりました。
いくつか仕事でも使えそうかも、より良い設計ができるようになるかも、という気がしています。





実行例

Observerパターンを実装したプログラムの実行例です。

※スクリプトを実行していますが、対象となるパターンのpytestを実行しているだけです。
 pytestといっても、ほとんどテストというより実行結果の出力として使っています。

使用ライブラリ

特筆すべきライブラリを記載しておきます。

pydantic

FastAPIも利用している、有名なライブラリですね。
Pythonは動的型付け言語ですが、より厳密に型を意識できるようにpydanticを極力使用するようにしました。

multimethod

overloadを実装しやすくするために使用してみました。
Pythonでoverloadを今回はじめて実装したので、もっと良いライブラリやもっと良い方法があるかもしれません。


Discussion