私たちはかなりコードの多い PHP5 プロジェクトに取り組んでおり、先週は RESTful API の PoC に取り組みました。モデルクラスをビジネスクラスから分離しています。
CRUD 機能を実装しようとすると、モデルに対して CRUD を直接実装するのは非常に簡単ですが、ビジネス ロジックに対して CRUD を実装するのは簡単ではありません。その機能は現在存在するビューに固有のものであり、そのインターフェイスは提供しないためです。 API を実装するために必要な一般的なデータ アクセス モデル。
このことについて考えてみると、次のような疑問が頭に浮かびました。
モデルの柔軟性を維持し、モデルが現時点で気にしない機能を維持しながら、データを操作するための最良の方法は何ですか (電子メール アドレスを変更するときにアクティベーション リンクを含むメールを送信するなど)。
ビジネスロジックのほとんどがモデルに実装されている以前にdjangoで多くの作業を行ってきましたが、ビジネスロジックを分離しておく必要があるのはなぜですか? 実際の例はありますか?もしあれば、これはどのような問題を解決しますか?
いくつかの可能な解決策も頭に浮かびました:
- ビジネスロジック全体をモデルに入れます。save メソッドの呼び出し後または呼び出し前に、どのフィールドが変更されたかを確認します。
- オブザーバー パターンを使用してビジネス オブジェクトにモデルの変更を通知し、モデルと直接やり取りします。
あなたの意見では、長所と短所は何ですか、どうしますか?