私は80%の複雑なビジネスロジックと20%のCRUD、またはその逆のアプリケーションを持っているとしましょう。私はどのように私のビジネスロジック層を実装する必要がありますか?
過去には、私は、コマンドパターンのいくつかの種類を使用し、ComplexFooCMD
またはEvenMoreComplexBarCMD
のようなクラスを持っていたが、常にInsertFoo
、UpdateFoo
、DeleteFoo
とSelectFoosCMD
の束とUpdateSomeValuesOfFoo
またはSelectSomeFoos
の数になってしまっています。これらのすべてはBLLに住んでいました。
FooService
のようなクラスを使用したサービスパターンを使用しているが、これらも期待
insertFoo
、
updateFoo
と
selectSomeFoo
が含まれています。これらのメソッドをすべてのサービスに置いたり、プレゼンテーションレイヤーにそれらのメソッドを公開するためだけに存在するサービスを持つことさえあれば、多くのボイラープレートコードのように感じます。
CRUDパートと他のアプリケーションの両方に適合するパターンがありますか、またはアプリケーションのさまざまな部分に異なるパターンを使用すべきですか?
まあ、ほとんどの場合、「fooを挿入するとfooのIDを持つバーを挿入する」のようなCRUDルールがあります。このようなルールはdbに直接実装できますが、dbの管理者はあまり好きではありません。 – Harima555
そのようなものは、永続性層自体ではなく、ユースケースを知っているサービス層の内部に属しています。 CRUD操作は、オブジェクトを永続化する方法のメカニズムをカプセル化するだけでなく、いつ実行するかをカプセル化する必要があります。 – duffymo