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

时间:2017-12-25 11:16:38

标签: android data-modeling clean-architecture

我已经在Android中使用干净的架构和MVP阅读了令人印象深刻的article数据建模。

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

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

1 个答案:

答案 0 :(得分: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