5
クリーンアーキテクチャ:プレゼンターを含むユースケースまたはデータを返す?
クリーンアーキテクチャユースケースをさせインタラクタ応答/表示を処理するために(DIP以下、注入される)プレゼンタの実際の実装を呼び出すことを示唆しています。ただし、このアーキテクチャを実装し、インタラクターから出力データを返し、コントローラー(アダプター層内)がその処理方法を決定できるようにする人がいます。2番目のソリューションは、インタラクターへの入力ポートと出力ポートを明確に定義していないことに加えて、アプリケーションの責任をアプリケーション層から漏えいさせていますか? 入出力ポート Clean Architectureの定義、特にコントローラー、ユースケースインタラクター、プレゼンター間の関係を説明する小さなフロー図を考慮すると、「ユースケースの出力ポート」がどうあるべきかを正しく理解しているかどうかはわかりません。 六角形アーキテクチャのようなクリーンアーキテクチャは、プライマリポート(メソッド)とセカンダリポート(アダプタによって実装されるインターフェイス)を区別します。通信フローに従って、「ユースケース入力ポート」がプライマリポート(したがって、単なるメソッド)になり、「ユースケース出力ポート」が実装されるインターフェイスになります。実際のアダプターを取得するコンストラクター引数、インタラクターが使用できるようにします。 コード例 コード例を作成するために、これはコントローラーコードになります。 Presenter presenter = new Presenter(); Repository repository = new Repository(); UseCase useCase = new UseCase(presenter, repository); useCase->doSomething(); プレゼンターインターフェイス: // Use Case Output Port interface Presenter { public void present(Data data); } 最後に、インタラクター自体: class UseCase { private Repository repository; private Presenter presenter; public UseCase(Repository …