Кто хорошо разбирается в ООП?
Интересно Ваше мнение.
Есть несколько экземпляров кнопок:
class ContourButton implements Button {
public icon: string = '';
public title: string = 'Добавить';
click(): void {}
}
class CutButton implements Button {
public icon: string = '';
public title: string = 'Вырезать';
click(): void {}
}
let buttons = [new cutButton(), new ContourButton()];
После вывода кнопок на экране и клику я могу получить ссылку на саму кнопку и вызвать ее внутренний метод click()
click(btn: Button) {
btn.click();
}
Вопрос в том, что реализация метода кнопки cliсл у всех разный. Для этого у меня существует классы команды, в которые и защита логика.
class CutCommand {}
class ContourCommand() {}
Сейчас чтобы подставить нужную команду приходиться делать следующее:
click(btn: Button) {
let command: Command;
if (btn instanceof CutButton) {
command = new CutCommand(deps);
}
this.commandMenager.execute(command);
}
При этом внутренний click кнопки остается как-бы незадействован.
Как лучше сделать - внести создание команды new CutCommand(deps); в метод
Button.click() или оставить как есть. И как избавиться от instanceof