2010-12-30 13 views
1

私は80%の複雑なビジネスロジックと20%のCRUD、またはその逆のアプリケーションを持っているとしましょう。私はどのように私のビジネスロジック層を実装する必要がありますか?

過去には、私は、コマンドパターンのいくつかの種類を使用し、ComplexFooCMDまたはEvenMoreComplexBarCMDのようなクラスを持っていたが、常にInsertFooUpdateFooDeleteFooSelectFoosCMDの束とUpdateSomeValuesOfFooまたはSelectSomeFoosの数になってしまっています。これらのすべてはBLLに住んでいました。

は最近あまり複雑なビジネスロジックをアプリケーションに私は FooServiceのようなクラスを使用したサービスパターンを使用しているが、これらも期待 insertFooupdateFooselectSomeFooが含まれています。これらのメソッドをすべてのサービスに置いたり、プレゼンテーションレイヤーにそれらのメソッドを公開するためだけに存在するサービスを持つことさえあれば、多くのボイラープレートコードのように感じます。

CRUDパートと他のアプリケーションの両方に適合するパターンがありますか、またはアプリケーションのさまざまな部分に異なるパターンを使用すべきですか?

答えて

0

CRUDをビジネスルールとは考えません。

「優良顧客に、年間売上高の関数であるパー​​センテージ割引を与える」または「クライアントのユーザーインターフェイスでこのオプションを表示しない」のようなルールのパターンがあるかどうかはわかりませんその会社の住所はこの州のリストからのものです」。

ビジネスルールは必ずしもきれいではありません。

+0

まあ、ほとんどの場合、「fooを挿入するとfooのIDを持つバーを挿入する」のようなCRUDルールがあります。このようなルールはdbに直接実装できますが、dbの管理者はあまり好きではありません。 – Harima555

+0

そのようなものは、永続性層自体ではなく、ユースケースを知っているサービス層の内部に属しています。 CRUD操作は、オブジェクトを永続化する方法のメカニズムをカプセル化するだけでなく、いつ実行するかをカプセル化する必要があります。 – duffymo

0

behavior-driven developmentを読むことを強くお勧めします。私はそれが正しい方向にあなたを導くだろうと思う。

私がこのテーマで読んだベストブックはですが、Ruby中心の例がたくさんあるので、あなたが好きな言語に基づいて他のリソースを見たいと思うかもしれません。

簡単に言えば、あなたのテストはあなたのアーキテクチャをガイドして、あなたのアプリケーションの必要な振る舞いがテストの指針となるようにします。

関連する問題