Клон Google Sheets на Canvas | Часть 4: Стили, Undo/Redo и паттерны Command, Flyweight, Observer

11 подписчиков

12+
12+

3 просмотра

22 дня назад

ПожаловатьсяНарушение авторских прав

11 подписчиков

12+
12+

3 просмотра

22 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

3 просмотра

22 дня назад

В четвертой части продолжаем писать клон Google Sheets. Добавим возможность применять стили к ячейкам (жирность и курсив) и создадим интерфейс тулбара. Основная задача этой части, заложить правильную логику работы с данными и реализовать механизм отмены и повтора действий (Undo / Redo). Чтобы код легко масштабировался, применим три паттерна проектирования: - Flyweight (Приспособленец). Логику хранения стилей скопируем из Excel. Стили на ячейках часто повторяются, и чтобы не забивать память тысячами одинаковых объектов, на уровне ячейки мы будем хранить только ID стиля. А сами стили вынесем в отдельный словарь (StyleRegistry). - Command (Команда). Чтобы иметь историю изменений с возможностью отката, мы не будем менять стили напрямую. Вместо этого сделаем обертку для каждой операции (CommandManager и интерфейс ICommand). Каждое действие будет иметь методы execute (выполнить) и undo (отменить). - Observer (Наблюдатель / EventEmitter).Синхронизировать состояние кнопок тулбара и активной ячейки напрямую, плохой вариант, так как стили могут меняться при отмене действия (Ctrl+Z) или вставке текста. Чтобы убрать жесткую связность и костыли с прямым вызовом перерисовки, напишем строго типизированный EventEmitter, через который компоненты будут подписываться на изменение состояния.

Название:

Клон Google Sheets на Canvas | Часть 4: Стили, Undo/Redo и паттерны Command, Flyweight, Observer

Категория:

Разное