Вызывать метод инстанса через аксессор плохая практика?
В настоящее время я изучаю принципы ООП и 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');