假设我必须模拟信用卡报告和借记卡报表。考虑到它们都具有相同的属性,如交易量、交易日期、交易地点、交易id和交易状态。
我应该如何用Java来建模呢?我是否应该像上面提到的那样创建单个类,如Creditdebit类,并使用它来创建信用报告和借方报告?或者创建独立的类,因为它们本质上是不同的?我应该如何处理这种情况?在处理这样的情况时,或者如果有任何模式来处理这样的情况,请帮助我获得资源。
发布于 2020-02-26 16:56:41
它们有根本的不同吗?根据你的描述听起来不像。是的,从逻辑上讲,你和我看待信用卡和借记卡的方式是完全不同的。
但是,您需要区分您认为在您的头脑中是不同的,以及如何使用它和您需要建模为不同的程序才能进行处理,因为这是两种不同的东西。有时,代表您如何使用它和您的程序将如何使用它的想法是相同的,但并不总是如此。
在你的例子中,你描述了两件东西,它们可能有不同的名字,但实际上是一样的东西。如果它们都有相同的属性,而且函数定义完全相同,那么它就是同一个类--为什么要写两次呢?尽量减少你的代码库。
也就是说,为两者创建一个单独的类也不是坏事。它可以帮助您稍后扩展代码。
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类包含所有逻辑,DebitCard和CreditCard都是完全空的类,继承了父类Card的所有字段和逻辑。这里的优势再次是扩大。如果稍后,您确定CreditCard需要想出一些方法来每月付款(而不是在您最初的描述中),那么您可以在不以任何方式对DebitCard产生负面影响的情况下添加该方法。
https://stackoverflow.com/questions/60418628
复制相似问题