Python におけるドメイン駆動設計(戦術面)の勘どころ Junya Hayashi @loose_agilist ウェブ開発やロボット開発でドメイン駆動設計を適用してきた体験を元に、Python でドメイン駆動設計を実践する際によくある課題や失敗、役に立つ設計やライブラリ、考え方についてお話します。
概要 やや古い記事だけど、InfoQ のドメイン駆動設計・開発の実践には次のように書かれています。 ドメイン・クラスがData Access Object(DAO:データ・アクセス・オブジェクト)クラスに依存し、サービス・クラスがドメイン・クラスに依存するという設計上の依存関係がDDDによる実装に際してDIを"なくてはならない"ものにしています。 Python の場合、DI(依存性の注入)の実現には Inject が便利です。 利用例 ざっと100行程度でサンプルを書くと、このような形になります。 # -*- coding: utf-8 -*- import uuid from abc import ABCMeta, abstractmethod import inject def config(binder): binder.bind(UserRepository, UserMemory
バージョン Python 3.7.0 目次 ドメインサービスとは エンティティ自身に横断的な知識を実装 ドメインサービスに横断的な知識を実装 使う場面によっては別の案があるかも ドメインサービスとは ドメインサービスは、値オブジェクトとエンティティの横断的な知識を実装することが許されている。 エンティティ自身に横断的な知識を実装 エンティティに横断的な知識を持たせるように実装してみる。 ユーザ自身に他のユーザとの重複を判断させるのは、確かに違和感がある。 from __future__ import annotations import unittest import uuid from dataclasses import dataclass @dataclass(frozen=True) class UserId: value: str @dataclass(frozen=True)
You probably know the famous scikit-learn algorithm cheat sheet. For fun, I revisited it a bit … An Extended Version Of The Scikit-Learn Cheat SheetYou probably know the famous scikit-learn algorithm cheat sheet. This is a kind of decision tree, helping to figure out what machine learning algorithm to choose, depending on the type of problem you have : classification, regression, etc. … Now that I
Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games. SDL officially supports Windows, macOS, Linux, iOS, and Android. Support for
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く