干净的架构 - 进行数据模型映射的正确方法是什么?
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
我在 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