gpt4 book ai didi

如果对象具有相同的属性但它们根本不同,则 Java 建模类

转载 作者:行者123 更新时间:2023-12-01 17:41:38 25 4
gpt4 key购买 nike

假设我必须对信用卡报告和借记卡报告进行建模。考虑它们都有相同的属性,如交易金额、交易日期、交易地点、交易 ID 和交易状态。

我应该如何在 Java 中对此进行建模?我是否应该创建像 Creditdebit 类这样具有上述属性的单一类,并使用它来创建信用报告和借记报告?或者创建单独的类因为它们根本不同?我应该如何处理这种情况?帮助我提供处理此类情况的资源,或者是否有任何模式可以处理此类情况。

最佳答案

它们有本质上的不同吗?根据你的描述,听起来不像。是的,从逻辑上讲,您和我对信用卡和借记卡的看法是根本不同的。

但是您需要区分您认为的不同内容以及您实际使用它的方式以及您需要建模为不同的内容以使您的程序能够处理,因为这是两个不同的事情。有时,代表您如何使用它和您的程序将如何使用它的想法是相同的,但并非总是如此。

就您而言,您描述的两个事物可能具有不同的名称,但实际上是同一事物。如果它们具有所有相同的属性,并且函数定义完全相同,那么它是同一个类 - 为什么要写两次呢?最小化您的代码库。

也就是说,为两者创建一个单独的类也不是一件坏事。它可以帮助您稍后扩展代码。

abstract class Card {
UUID id;
BigDecimal limit;
BigDecimal currentAmount;
...
public void charge(BigDecimal amount) {
currentAmount = currentAmount.add(amount);
}
...
}
class DebitCard extends Card {}
class CreditCard extends Card{}

因此,您的 Card 类包含所有逻辑,而 DebitCardCreditCard 都是完全空的类,继承了它们的所有字段和逻辑父类Card。这里的优势同样是可扩展性。如果稍后您确定 CreditCard 需要找出某种方式进行每月付款(不在您的原始描述中),那么您可以稍后添加该方法,而不会对 DebitCard 产生负面影响以任何方式。

关于如果对象具有相同的属性但它们根本不同,则 Java 建模类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60418628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com