今日はFuturesとCallablesに関連するいくつかの記事を読んでいて、MVCベースの環境で作業するときのベストプラクティスについて考えていました。
コントローラーでFutureオブジェクトを作成し、サービスクラスにFutureオブジェクトを返すように強制する必要があるのではないかと思っていました。
1つの特定のAPIが2つの異なるサービスからデータを取得する必要があり、コントローラーでFutureを実行しても、別のサードパーティサービスへの2番目(または3番目)の呼び出しがブロックされない場合があります。これは正しい考えであり、賢明な選択のようです。
しかし、これは厄介に見えます。もう少し考えてみると、共通のサービスを作成し、将来のオブジェクト作成とサードパーティのAPI呼び出しをすべて非表示にするのは良いことだと思いました。これにより、すべてが非ブロッキングになり、コントローラーはサービスであるとは感じられなくなります。
どの道をたどるべきですか?
コントローラーがあるからといって、他のオブジェクトも持つことができないわけではありません。
APIをクライアントオブジェクトでラップし、乱雑な実装の詳細をそこに隠します