Вызывать метод инстанса через аксессор плохая практика?

В настоящее время я изучаю принципы ООП и SOLID.

В этом примере я получаю данные с сервера и обрабатываю их с помощью композиции.

Насколько я понимаю, вызов методов через аксессор — неправильный подход.

columns.inputFieldsColumn.recalculateInputFields('test1');
columns.amountColumn.removeItem('test2');

Как переписать правильно этот код?

class InputFieldsColumn {
    constructor(fields) {
        this.fields = fields;
    }

    recalculateInputFields(machineName) {
        this.fields = this.fields.map(i => i.machineName === machineName ? i.value + 1 : i);
    }

    addItem(item) {
        this.fields = this.fields.push(item);
    }
}

class AmountColumn {
    constructor(fields) {
        this.fields = fields;
    }

    recalculateAmount(machineName) {
        this.fields = this.fields.map(i => i.machineName === machineName ? i.value + 23 : i);
    }

    removeItem(machineName) {
        this.fields = this.fields.filter(item => item.machineName !== machineName);
    }
}


class Init {
    constructor(columns) {
        this._inputFieldsColumn = new InputFieldsColumn(columns.inputFieldsColumn);
        this._amountColumn = new AmountColumn(columns.amountColumn);
    }

    get inputFieldsColumn() {
        return this._inputFieldsColumn;
    }

    get amountColumn() {
        return this._amountColumn;
    }
}

const columns = new Init({ inputFieldsColumn: [{ value: 15, machineName: 'test1' }], amountColumn: [{ value: 24, machineName: 'test2' }] });

columns.inputFieldsColumn.recalculateInputFields('test1');
columns.amountColumn.recalculateAmount('test2');
columns.amountColumn.removeItem('test2');

Ответы (0 шт):