2017-04-03 6 views
3

Repositoryドメインレイヤーの各メソッドにUseCasesを作成する必要がありますか?例えばリポジトリの各メソッドにAndroid Clean Architecture UseCase?

は、あなたがどんな、データベースまたはファイル内のレコードの数を返しますsize()方法がある見ることができるように、私は、このようなリポジトリのインターフェース

interface ThingRepository { 
    void create(Thing thing); 
    void delete(Thing thing); 
    List<Thing> readAll(); 
    int size(); 
} 

を持っていることを前提としています。そして、この方法はかなり速いです。 UIスレッドをブロックせず、同期して実行できるので、この方法ではUseCaseの必要はないと思います。

UseCaseを作成するときとそうでないときに私を説明することができます。基本的にはUseCase作成のルールはありますか?

ご迷惑をおかけして申し訳ありません。事前に

おかげで;)

はまた、私はgithubの上でAndroidの-CleanArchitectureレポで同じissueを開いたが、誰もそれに答えていない、まだ私はここに求めている理由です。

+1

ユースケースは、「フェッチ・ユーザー・リスト」のような高水準のドメイン・ロジックを表すことを意図しています。ユーザーリストを取得すると、ネットワーク、ローカルリポジトリ、またはその他の方法から取得される可能性があります。リポジトリがアーキテクチャ内の別の層にあるため、リポジトリへの1対1のマッピングではありません。ドメインとデータの間に1対1のマッピングがあれば、それらを分離する目的は壊れてしまいます。 – drhr

+0

@drhr私の場合、あなたは私にUseCaseを作成しないことを提案していますか? –

+0

@drhr「ドメインとデータの1対1のマッピングは、それらを分離する目的を破るでしょう。私は、MVPの使用がこのような場合には良いと思いますが、私の場合は何を提案できますか? –

答えて

1

楽しい質問!

簡単な答えです。 プログラマの場合はユースケースを記述しないでください。 specifications documentはあなたのユースケースを派生させる場所です。かんばんのボードにユースケースがすべて整理されたら、それらの問題を解決し始めます。一つずつ。

通知プログラマと言っていますか?それはあなたが仕事に行き、座って、上司にあなたの仕様を渡し、あなたが8時間コードして家に帰るときだけです。しかし、それは通常そうではなく、私たちの一部は建築家です。あなたのオリジナルのポストの文脈から

(これは。私の次の点を単純化し過ぎている)、およびコメントの誰もがあなたの上にジャンプしている理由

い我々はする必要が...これのためでありますドメインレイヤのリポジトリインタフェースから各メソッドのユースケースを作成しますか?

簡単に言えば、テスト駆動型開発では、まず不合格のテストを書くまで、コードの1文字を書きません。同じことがユースケース主導の開発にも当てはまります。解決しようとしているユースケースがあるまで、コードの1文字を書いてはいけません。

あなたは何でも、>データベースまたはファイル内のレコードの数を返します。size()メソッドがある見ることができるように。そして、この方法はかなり速いです。 UI>スレッドをブロックせず、同期的に実行できるので、このメソッドにはUseCaseは必要ありません。

何がそうですか。 「データベースのレコード数を表示するためのユースケースはありませんでしたので、リポジトリインターフェイスにsize()関数を追加しました。なぜなら、それが必要であると思ったからです。私はそのためのユースケースを作成しようとしています。 。「そのユースケース駆動開発の単純ではない目標。

だから、すべて言われていることは、背中のあなたのThingRepositorysize()機能に来てみましょう。あなたはsize()機能が追加されている必要がある唯一の理由は、解決することです

例: "アプリケーションには、のすべての合計数が データベースに表示されている必要があります。

ユーザーにThingsと表示されている場合、Presenterには_ThingRepositoryが挿入されている可能性があります。私は多くの場合、すでにメモリに入っているか、または別のPresenter機能のためにある時点にいる必要があるので、_ThingRepository.readAll().Count()を実行することになります(単純に別の国にある可能性があります)カウント。

あなたが最初size()ユースケースを解決しようとしていた場合は、お使いのかんばんボード「は、ユーザに物事を表示する」Presenter機能となるまで延期されなければならない実装の詳細あるとして、おそらく故障しています最後に責任がある瞬間

したがって、size()機能は本当にそこに存在する必要がありますか?あなたが本当にそれを置く理由がない限り、あなたがそれを必要とするまでではありません。

関連する問題