ギャンブラーが賭けのポートフォリオを維持し、時間の経過に伴う利益/損失を追跡できるようにするクライアント用のシステムを構築したとします。このシステムは、さまざまなスポーツへの賭け、勝利を他の賭けにロールオーバーするなど、多くの複雑なドメイン ロジックをサポートしています。
次に、私のクライアントは、予想屋のアイデアをサポートしたいと考えています。予想屋は実際にギャンブルをするのではなく、何を賭けるべきかについてのヒントである「予想シート」を作成します。チップ シートにはさまざまな種類があります。ベット可能なイベントに関するチップを含むものもあれば、競馬に関するチップのみを提供するものもあります。私のクライアントは、システムがギャンブラーのパフォーマンスを追跡するのと同じ方法で予想屋のパフォーマンスを追跡することを望んでいます。さらに、さまざまな種類の予想屋内および異なる種類の予想屋の間でパフォーマンスを比較できるようにします (たとえば、最高の競馬予想屋は誰ですか?彼らは一般的にサッカーの予想屋よりも優れたパフォーマンスを発揮しますか?)
現在、ドメイン言語はギャンブラーと予想屋の間で完全に異なり、ギャンブラーのポートフォリオには存在しない予想シートの追加の分類があります。これは、これらが別個の境界付けられたコンテキストであることを示唆しています。ただし、どちらも時間の経過とともにパフォーマンスを追跡するため、多くの共有ロジックがあります。
だから私の質問は:
- これらは本当に別個の境界付けられたコンテキストですか? 私は、ギャンブラーのコンテキストに分類を追加することに慎重です (滑りやすい坂道のように感じます)。
- それらが異なるコンテキストである場合、次のことを行う必要があります。
- それらの間でパフォーマンス追跡ロジックを共有しますか (つまり、DLL、jar などを共有しますか)? これにより、コンテキスト間の緊密な実装結合が作成され、正しくないと感じられます。
- パフォーマンス追跡ロジックをギャンブル境界コンテキストに残し、分類ロジックを予想屋バウンダー コンテキストに配置し、ギャンブル コンテキストにパフォーマンス追跡を依頼しますか? この場合、予想屋のコンテキストがギャンブルのコンテキストにコマンドを送信するように見えますが、これも間違っているように感じます (私はイベントの方が快適です)。
- 何か他のことを...両方のコンテキスト間で通信し、相互に関連付けるある種の合成レイヤーを行いますか?
明確化
ギャンブラーのポートフォリオと予想屋の予想シートはほとんど同じです。唯一の違いは、予想シートを分類できることです (例: 競馬、サッカーなど)。
パフォーマンス追跡とは、ポートフォリオ/ヒントシートの利益/損失を測定することです。