私は構築中のWebアプリケーションのOO分析と設計を完了し、実装に着手しています。 PythonとWeb開発フレームワークDjangoを使用してシステムを実装するように設計が決定されました。Djangoモデルクラスからドメインクラスを切り離す
永続性が必要なドメインエンティティクラスの実装を開始したいと考えています。 Djangoは永続性のためにDjango ORMを使用するためにDjangoモデルクラスから継承されたクラスとしてDjangoにこれらのクラスを実装させるように思われます。しかし、これは私のクラスのエンティティと永続化機構との間の結合が強すぎるようです。ある段階でDjangoを捨てて別のWeb開発フレームワークを使用したい場合や、代わりにDjangoのORMを捨てたい場合はどうなりますか?今度はドメインエンティティクラスを一から書き直す必要があります。
ドメインクラスをスタンドアロンのPythonクラスとして実装し、すべてのビジネスロジックをこれらのクラスにカプセル化してから、ブリッジやアダプタなどのデザインパターンを使用して永続ストレージを委任する方がよいでしょう。これらのドメインクラスはDjango ORMに、例えばこれに対して適切に設定されたDjangoモデルクラスを介して。
誰でもこれを行う方法についての提案はありますか?私は人々がDjangoモデルクラスから継承したクラスとしてドメインクラスを実装し、このクラス内でビジネスロジックを混在させるだけであると思っています。これは、行の変更、メンテナンス、再利用性などのための良い考えではありません。
なぜバグではなく機能になるのか説明した方がいいでしょう。私はPythonが大好きですが、Djangoのさまざまなコンセプトの融合は必ずしも勝利しません。 – AdamC