清洁体系结构 - 进行数据模型映射的正确方法是什么?



我已经阅读了有关使用干净体系结构和MVP在Android中的数据建模的令人印象深刻的文章。

现在,我想重构我在域中拥有的一些现有模型,以使它们不包含包裹代码(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

相关内容

最新更新