首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果对象具有相同的属性,但它们的本质不同,则为Java建模类。

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

Stack Overflow用户
提问于 2020-02-26 16:41:52
回答 1查看 65关注 0票数 0

假设我必须模拟信用卡报告和借记卡报表。考虑到它们都具有相同的属性,如交易量、交易日期、交易地点、交易id和交易状态。

我应该如何用Java来建模呢?我是否应该像上面提到的那样创建单个类,如Creditdebit类,并使用它来创建信用报告和借方报告?或者创建独立的类,因为它们本质上是不同的?我应该如何处理这种情况?在处理这样的情况时,或者如果有任何模式来处理这样的情况,请帮助我获得资源。

EN

回答 1

Stack Overflow用户

发布于 2020-02-26 16:56:41

它们有根本的不同吗?根据你的描述听起来不像。是的,从逻辑上讲,你和我看待信用卡和借记卡的方式是完全不同的。

但是,您需要区分您认为在您的头脑中是不同的,以及如何使用它和您需要建模为不同的程序才能进行处理,因为这是两种不同的东西。有时,代表您如何使用它和您的程序将如何使用它的想法是相同的,但并不总是如此。

在你的例子中,你描述了两件东西,它们可能有不同的名字,但实际上是一样的东西。如果它们都有相同的属性,而且函数定义完全相同,那么它就是同一个类--为什么要写两次呢?尽量减少你的代码库。

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

代码语言:javascript
复制
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产生负面影响的情况下添加该方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60418628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档