Скрытый потенциал шаблона «команда»

Многим известно, что основной целью внедрения входящего в каталог GoF шаблона «команда» (англ. command) служит инкапсуляция действий над элементами системы в объекты, наделенные состоянием и имеющие жизненный цикл. Те, кому довелось получить опыт его промышленного использования, знают, что объектное представление команд позволяет ставить их в очередь, синхронно и асинхронно выполнять, осуществлять откат или повторное выполнение и т.д. Но далеко не всем приходилось слышать, какие мечты связывают с этим шаблоном пользователи и специалисты по инженерии взаимодействия.

Судите сами: любая очередь команд — это весьма традиционный контейнер, основное отличие которого сводится к семантике времени: одни команды «следуют» за другими, возврат к «предшествующим» командам означает движение в «прошлое» и т.д. Для привычных к 4D-парадигме архитекторов ПО в этом нет ничего необычного.

Необычное начинается в тот момент, когда мы задаем себе вопрос: «Можно ли очередь команд «продлить в прошлое» за пределы текущего сеанса работы приложения?» — и не видим основания не дать ответ: «Да!»

Сегодня большинство программных продуктов с легкостью «забывают» о действиях своих пользователей, стоит их перезапустить и начать работать сначала (а иногда и просто сохранить (!) документ). Глядя на это, обыватель может подумать, что организация «долговременной памяти» программы — дело безумно хлопотное, дорогое или даже технологически невозможное.

Но ведь это не так! Сохранять сколь угодно сложные агрегаты в энергонезависимой памяти и считывать их в оперативную память будущих программистов учат на младших курсах, этим владеют увлеченные программированием старшеклассники… Почему же это умение не переносится в промышленный код?

Создать межсессионную память — просто. Достаточно целенаправленно управлять очередью команд и при закрытии или перезапуске приложения сохранять ее элементы на жестком диске. На фоне гига- и терабайтных объемов дисков скромные сотни килобайт данных о состоянии объектов очереди почти ничего не значат! А в реализации этой функции поможет проверенный шаблон объектно-ориентированного проектирования «команда».

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

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.