1

私のn層アーキテクチャでは、データセット/データテーブルからの応答コンテキストを埋めるためのマッパーレイヤーがDBlayerから提供されています。そのため、DBlayerはMapperlayerを呼び出して処理を実行します。しかし、responsecontextを埋める前に、いくつかの検証を行う必要があります。このために、mapperlayerからbusinesslayerを呼び出しますか?または、DBlayerから取得したものをbusinesslayerに渡し、businesslayerにmapperlayerを呼び出すように依頼する必要があります。

ここで、私のビジネスレイヤーはビジネスエンティティを使用して独自の操作を行います。この設計上の決定を整理するのを手伝ってください。

4

1 に答える 1

3

どちらも「機能」しますが、私はそのようなものをビジネスオブジェクトに入れないことを好みます。

ビジネスレイヤーにマッパーレイヤーを呼び出させると、パッケージ間に循環依存関係が作成されます。マッパーレイヤーはすでにビジネスレイヤーについて知っている必要があります-それがその責任の中心です

しかし、なぜビジネスレイヤーはマッパーについて知っている必要があるのでしょうか。マッピングはビジネスロジックとは何の関係もありません。もちろん、害は、双方向の依存関係がある場合、それらを個別にテストすることはできないということです。

一方向の依存関係として保持します。このようにして、マッピングオブジェクトから独立してビジネスオブジェクトをテストできます。

また、永続性とモデルの間に配置されるのではなく、永続性層にマッパーを保持します。永続層にResultSetではなくビジネスオブジェクトを返すようにします。可能であれば、パッケージをプライベートにします。私の推論は同じです-最小限の知識は最小限の結合を意味します。

検証にはさまざまなレベルがあります。データがデータベースに入るずっと前に検証されるべきだったと思います。データベースにクエリを実行するときは、特定のビジネスルールを除いて、検証する必要はありません。これらのルールは、永続層ではなく、サービス層のビジネストランザクションの一部である必要があります。

于 2012-06-08T11:59:21.613 に答える