1

我已经阅读了这篇关于在 android 中使用干净的架构和 MVP 进行数据建模的令人印象深刻的文章

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

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

4

1 回答 1

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

于 2017-12-25T13:08:58.133 回答