2017-12-25 14 views
1

私はクリーンなアーキテクチャとMVPを持つアンドロイドのデータモデリングでこの印象的なarticleを読んでいます。クリーンアーキテクチャ - データモデルマッピングを行う正しい方法は何ですか?

私は自分のドメインにある既存のモデルをリファクタリングして、パーセル可能なコード(アンドロイドコード)を含まないようにし、特定のビューで機能するように合理化したいと考えています。 RecyclerViewで選択された位置を取得するために、モデルに "selectedPosition"というフィールドを追加するなど、モデルを変更する必要がある場合があります。モデルを変更する必要があることは何度もあります。純粋ではなく、維持するのが少し難しいモデルで終わります。

具体的には、私は3つの支払いシステム用の3つのモデルデータを使用しています。 3つのモデルのすべてのフィールドが戻ってくる。彼らはフィールドのために異なる名前を持っています。誰かが3つのモデルすべてに共通のモデルを使用するために使用されたアーキテクチャの例を私に示してもらえますか?

答えて

1

データモデル

私は3つの決済システムのためのあなたの3つのモデルが共通の特徴を持っていることを確信しています。だからあなたはこの機能を利用して、それをインターフェースにすることができます。各モデルは、このインタフェースを実装する必要があります。あなたのケースでは、データモデルを表示する必要があります。例えば

class Info { 
    int id; 
    String cardNumber; 
    ....... 
} 

interface ITransactionable { //or abstract class with the common func and prop 
    void addUserWithCard(String cardNumber, String name); 
    boolean makeTransaction(\*some params*\); 
    Info getPaymentUserInfo(); 
} 

class Model1/2/3 implements ITransactionable { 
    \*In each case methods doing different job but give you same result, 
     you can take info for your models from servers, clouds, db...*\ 
} 

ドメインモデル

ドメインモデルは、データモデルの操作、ビジネスロジックを表します。

class DonationService { 
    ITransactionable paymentService; 
    DonationService(ITransactionable paymentService) { 
     this.paymentService = paymentService 
    } 
    Info makeDonation(int money) { 
     paymentService.addUserWithCard("4546546545454546", "Vasya"); 
     paymentService.makeTransaction(money); 
     return paymentService.getPaymentUserInfo(); 
    } 
    ........ 
} 

各レイヤーは、APIのような次のものに与える必要があります。例えば

プレゼンテーション

は、各トランザクションのデータをrecyclerViewを埋めることができます。また、トランザクションに関する詳細情報を取得したり、新しいトランザクションを作成したりするなど、ビューからイベントを取得します。

あなたはそれを実現することができる方法を見てのためにこれを確認することができます。https://github.com/android10/Android-CleanArchitecture

+0

あなたがお勧めgithubの上のリポジトリが、私がまさに必要です。ありがとう。 – j2emanue

関連する問題