![]() |
Цитата:
Состоит из следующих компонентов: Код:
1. Интерфейс состоянияКод AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Есть такой паттерн "состояние", да
Наверно делать с его помощью проигрыватель - не самая худшая идея - да. Но куда Вы его в систему отмены/повтора впихнуть предлагаете?! В редакторе есть еще непосредственно система редактирования, т.е. определения действий - там да, для переключения инструментов, состояния процесса редактирования всяко лучше свичей построить набор состояний. Но здесь то речь про _применение_ и _отмену_ этих изменений. Хочется видеть то не копипасту канонического примера из книги, а пример использования в данной задаче. |
Цитата:
|
Цитата:
Я к чему это всё написал: - Вы процитировали все мои слова про состояние редактируемых данных/графики (_не_ редактора!), про его откат, про продходы сохранения изменений и сохранения всего состояния данных применительно к откатам. - Потом привели пример паттерна "состояние" очень похожий на пример из книги "ActionScript 3.0. Шаблоны проектирования". - Как применить этот шаблон к откатам совершенно не понятно - Поэтому хочется увидеть как паттерн состояние работает внутри системы откатов/повторов (мне чисто из-за любопытства - ибо задачи в данный момент построить редактор не стоит) Или Вы имели в виду только "переключение инструментов"? |
На мой взгляд, самый надежный вариант позволяющий и усложнятся и макросы писать, и вообще переводит работу с редактором на новый уровень... это когда команды редактор выполняет не непосредственно, а через прослойку интерпретируемого языка (для сравнения, Vim и Emacs так примерно работают, CAD / Photoshop - похоже).
В таком случае пользователь работая с редактором пишет программу, которую потом можно и воспроизвести, и сохранить, или, например, есть вот такая штука (использую, очень нравится): http://www.emacswiki.org/emacs/UndoTree (т.е. можно хранить одновременно несколько веток изменений и потом выбирать какую именно использовать - гораздо круче, чем, когда один шаг undo + новая команда затирают десяток undo сделанных до того). |
Цитата:
Если макросы пользователю редактора не нужны, то какой в этом смысл? Цитата:
Хотя есть - скопипастить оттуда-отсюда. |
В чем смысл:
Я вот сейчас "прохожу перепрофилировку" в "на все руки мастер (но восновмом, Руби, наверное, хочется верить, возможно, но пока нет, а в оставшееща время ПХП / АСП классик / Жабоскрипт и прилагающаяся муть)". Возникают два типа штатных ситуаций: - ХТМЛ - очень предательская технология, с напрочь отсутствующей логикой, где сносный результат достигается только бесконечным повтором попыток и ошибок. Работая с файлом приходитыся очень часто делать несколько изменений - потом проверять, потом недомуветь от результатов, потом возвращаться и переделывать, и так по многу раз. (Сегодня пару часов убил пытаясь понять почему у кнопки два раза срабатывает onclick - оказалось label рядом с кнопкой диспатчил каким-то образом событие в соседнюую кнопку... - Жабоскрипт "программисты", наученные горьким опытом даже не ищут логику в происходящем, а руководствуются "джаваскрипт чутьем", которе им подсказывает, что и где поменять, чтобы "заработало". Иногда приходится просить помощи у старшего товарища, а потом, после того как "заработало", откатывать множество бесполезных изменений сделанных старшим товарищем. :) ЗЫ. Мержить можно: ediff - сразу же и мержит, но до такой степени не доходило, пока. |
Цитата:
Если вам всётаки интересно моё мнение каким образом я вижу данную реализацию в шаблоне: В данном случае я вижу два состояния: 1. Переход на следующее дествие 2. Переход на предыдущее действие А в качестве вспомогательного класса можно использовать класс реализованный на основе шаблона "Декоратор". Как вы помните из книжечки Декоратор добавляет объекту обязанностей. Он упаковывает его в свою новую функциональность и свойства, в то время как внутрення структура объекта остаётся неизменной. Таким образом я предлагаю своего рода упаковывать каждое действие в новое действие, а чтобы не возникло путаницы является ли это новым действием или отменой действий, за это как раз и будет отвечать основная реализация Состояния. |
Цитата:
|
Цитата:
Я считаю as3 достаточно гибким языком, потому как можно реализовать сию конструкцию не только расширением наследования классов и расширением реализации интерфейсов, но и передачи самого класса в экземпляр другого класса посредством ключевого слова this |
| Часовой пояс GMT +4, время: 06:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.