我已经在Android中使用干净的架构和MVP阅读了令人印象深刻的article数据建模。
现在我想重构我在我的域中的一些现有模型,以便它们不包含可分区代码(android代码)并且简化为在特定视图中工作。您知道有时我们必须更改模型以使其在视图中工作,例如在RecyclerView中获取所选位置,我们将向模型添加名为“selectedPosition”的字段。有很多次我们需要改变模型,然后我们最终得到的模型不是纯粹的,有点难以维护。
具体来说,我有3个我正在使用的支付系统的模型数据。 3个模型中的所有字段都有所不同。它们有不同的字段名称。有人能告诉我一个用于使所有3个模型使用通用模型的架构示例吗?
答案 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