Java класс моделирования, если объекты имеют одинаковые свойства, но они принципиально отличаются - PullRequest
0 голосов
/ 26 февраля 2020

Предположим, мне нужно смоделировать отчет по кредитной карте и отчет по дебетовой карте . Учтите, что они оба имеют одинаковые свойства, такие как сумма транзакции, дата транзакции, место транзакции, идентификатор транзакции и статус транзакции.

Как мне смоделировать это в Java? Должен ли я создать отдельный класс, такой как класс Creditdebit, имеющий свойства, как указано выше, и использовать его для создания кредитного отчета, а также отчета о дебете? или создать отдельные классы , так как они принципиально отличаются ? как мне справиться с этим видом сценария ios? Помогите мне с ресурсами для решения таких случаев или если есть какой-либо шаблон для обработки сценария ios, как это.

1 Ответ

4 голосов
/ 26 февраля 2020

Они принципиально разные? Исходя из вашего описания, это не похоже на это. Да, логически, то, как вы и я можем думать о кредитных и дебетовых картах, они принципиально различны.

Но вам нужно различать то, что, по вашему мнению, отличается в вашем уме, и как вы его физически используете и что вы Для того, чтобы ваша программа могла обрабатывать ее, необходимо смоделировать ее как другую, потому что это две разные вещи. Иногда идеи, которые представляют как то, как вы используете его, так и то, как ваша программа будет его использовать, совпадают, но не всегда.

В вашем случае вы описываете две вещи, которые могут иметь разные имена, но буквально одинаковы предмет. Если они имеют все одинаковые атрибуты, а определения функций абсолютно идентичны, то это один и тот же класс - зачем писать его дважды? Минимизируйте свою кодовую базу.

Тем не менее, создание отдельного класса для обоих тоже не плохо. Это поможет вам масштабировать ваш код позже.

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 класс содержит все логи c, а DebitCard и CreditCard оба являются абсолютно пустыми классами, наследуя все их поля и logi c из родительского класса, Card. Преимущество здесь, опять же, масштабирование. Если позже вы определите, что CreditCard нужно найти способ совершать ежемесячные платежи (не в вашем первоначальном описании), то вы можете добавить это позже, не оказывая негативного влияния на DebitCard.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...