問題タブ [clean-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - CleanアーキテクチャでPresenterからActivityメソッドを呼び出す方法は?
クリーン アーキテクチャを使用しているアプリを開発しています。プレゼンターでは、メソッド onCompleted に何かが来ると、Main アクティビティから関数を呼び出す必要があります。これは私のプレゼンターです:
そして、これは私が呼び出さなければならない MainActivity からの私の関数です:
この関数を Presenter の onCompleted メソッドに呼び出す方法を教えてもらえますか? 前もって感謝します。
java - 機能の範囲をどのように定義しますか?
私は現在、Java/Android のクリーン アーキテクチャについて調べていて、このアプローチがとても気に入っています。
記事を読んでいくと、誰もが高レベルの観点 (プレゼンテーション/ドメイン/データ) からアプリケーションをどのように構成すべきかについて非常によく説明しており、機能ごとにパッケージ化することを推奨しているように見えますが、実際のディレクトリ構造に関する情報はかなり不足しています。 .
たとえば、従来の TODO アプリケーションを例にとると、次のようになります。
機能の範囲を定義するにはどうすればよいですか? fe executor などのベース/コア コンポーネントはどのパッケージに配置すればよいですか?
controller - クリーン アーキテクチャのコントローラ
Laravel アプリケーションでボブおじさんのクリーン アーキテクチャを適用しようとしています。
私が懸念しているのは、ボブおじさんが説明しているように、コントローラーは3番目のサークルであるインターフェイスアダプター(インサイドアウトから)に属している必要があることです。これは、コントローラーがユース ケース サークル (2 番目) のみに依存し、4 番目のサークルのフレームワークについて何も認識しないことを意味します。
ただし、一部のフレームワークのコントローラーは、基本クラス (たとえば、AbstractController クラス) を拡張する必要があります。また、Request オブジェクトを受信し、場合によっては Response オブジェクトを返す必要があるため、これはクリーン アーキテクチャの依存関係ルールを破るものです。外側の円のフレームワーク。
私は誤解していますか?そうでない場合、依存関係のルールを破らない解決策はありますか?
私のコントローラーは次のようになっています。
database - クリーン アーキテクチャ: フレームワーク間のシーケンス フロー
私は、ブログ、記事、およびビデオからボブおじさんのクリーン アーキテクチャについてもっと学ぼうとしています。
このアーキテクチャでデータベースを使用する場合、UI (Web やフォームなどのフレームワークとして) はデータベースについて何を知る必要がありますか? または、より一般的には、同じレイヤーにある 2 つ以上のピース/パーツ間でデータがどのように流れる必要がありますか?
たとえば、UI はアダプター/ゲートウェイと通信して、ビジネス エンティティと対話します。読み取り/書き込みのために、UI は、データベースにアクセスしてアダプター/ゲートウェイを渡すことができる任意のクラスを呼び出して、ビジネス エンティティと対話できることがわかります。
記事の多くは、この記事とほとんど変わりません ( https://subvisual.co/blog/posts/20-clean-architecture )。同じレイヤーにあるピースが互いにどのように機能するかについて説明している良い記事を見つけられませんでした。したがって、それを参照する記事は受け入れられる答えになります。
これは依存関係の規則に違反しているようには見えませんが、UI とデータベースの間に依存関係を作成しているため、正しいことをしていないように感じます。私はこの概念を考えすぎているのではないかと考えています。それは、3 層アーキテクチャ (UI -> BLL -> DAL) を学習するのに苦労しているからかもしれません。