干净的架构 - 进行数据模型映射的正确方法是什么?

clean architecture - what is the correct way to do data model mapping?

我在 android 中阅读了这篇令人印象深刻的关于数据建模的文章 article,它具有简洁的架构和 MVP。

现在我想重构我域中的一些现有模型,以便它们不包含可打包代码(android 代码)并且经过简化以在特定视图中工作。你知道有时我们必须改变模型,以便它在视图中工作,例如为了在 RecyclerView 中获得选定的位置,我们会向模型添加一个名为 "selectedPosition" 的字段。有很多次我们需要更改模型,然后我们最终得到的模型不纯粹并且有点难以维护。

具体来说,我有 3 个模型数据用于我正在使用的 3 个支付系统。 3 个模型中的所有字段都不同。他们对字段有不同的名称。谁能告诉我一个用于使所有 3 个模型使用通用模型的架构示例?

数据模型

我确信您的 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